Pythonimport fungerer ikke på vinduer

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg forsøger at importere en variabel fra en anden fil. Problemet er, at jeg får en ImportError: cannot import name 'issues' på linje 6 i variables.py

Det mærkelige er, det fungerer fint på min ubuntu-bærbar computer, men ikke på min Windows-hovedcomputer. Jeg har gået lidt og tilsyneladende har noget at gøre med relative stier, så jeg har forsøgt at tilføje en. foran parser, men så giver den fejlen SystemError: Parent module '' not loaded, cannot perform relative import.

Enhver ide, der forårsager dette?


parser.py:


#!/usr/bin/env python3

## Settings
fileIn = 'trending\_today.in'
fileOut = 'trending\_today.out'

print("Parse file...", end=" ")

## Parse file
with open(fileIn) as f:
    content = f.readlines()
content = [x.strip() for x in content]

## Parse lines
issues = []
for i in range(len(content)):
    issues.append(content[i].split(' '))

for i in range(len(issues)):
    for j in range(len(issues[i])):
        issues[i][j] = int(issues[i][j])

print("done.")

## Functions for writing
def writeFile(commands):    # Input [****]
    print("Write output file...", end=" ")
    for i in range(len(commands)):
        writeLine(commands[i])
    print("done.")
    return

def writeLine(line):    # Input: []
    string = ' '.join(line) # Convert array to line
    f = open(fileOut, 'a')
    f.write(string + '
')
    f.close()
    return


variables.py (som jeg udfører):


#!/usr/bin/env python3

## Import parser
from .parser import issues

print("Setup variables...", end=" ")

## Settings
number\_videos = issues[0][0]
number\_endpoints = issues[0][1]
number\_request\_decs = issues[0][2]
number\_caches = issues[0][3]
cache\_capacity = issues[0][4]

videos = issues[1]  # Size of videos

## Endpoints
endpoints = []  # 0 = datacenter ms
                # 1 = [ [cache\_nr, cache\_ms] ]
c = 2
for i in range(number\_endpoints):
    ep = issues[c]
    endpoints.append([])
    endpoints[i].append(ep[0])
    endpoints[i].append([])
    for j in range(ep[1]):
        cache = issues[c+j+1]
        endpoints[i][1].append(cache)
    c += ep[1]
    c += 1

requests = []   # 0 = Video
                # 1 = Endpoint
                # 2 = Requests
for i in range(number\_request\_decs):
    requests.append(issues[c+i])

print("done.")

Bedste reference


Når du kører dig program, udskriver det 'Parsing file... done.', før du rapporterer fejlen eller bare 'Parsing file...'?


Hvis den udskriver den anden meddelelse, formoder jeg, at problemet er, at filen 'trending\_today.in' ikke findes i den aktuelle arbejdsmappe, og open() undlader at medføre en undtagelse, hvilket betyder, at importen afbrydes før issues bliver sat.


Du skal enten ændre din arbejdsmappe til det rigtige sted eller sikre, at filen er der.


======


Da ingen af ​​udgangene vises, tager scriptet parsermodulet op i standardbiblioteket, i stedet for det lokale.


Du kan enten omdøbe 'parser.py' til noget, der ikke er en del af biblioteket eller indstille PYTHONPATH til enten '.' eller navnet på biblioteket. Jeg har mistanke om unix-versionen, PYTHONPATH er allerede indstillet.


Tilføjelse af en '\_\_init\_\_.py' -fil kan også fungere.