2016-03-22 3 views
0

я работал с Learn Python Трудный путь, и я застрял на примере 48. В примере 47, я должен был создать каталоги, которые выглядят следующим образом:PYTHONPATH Добавление данных, импорт модулей из разных каталогов на окнах

skeleton 
|--ex47 
    |--module.py 
    |--__init__.py 
|--tests 
    |--ex47_tests.py 
    |--__init__.py 

С этого момента мне пришлось импортировать ex47/module.py в теги/ex47_tests.py. Я получил ошибку «Без модуля с именем ex47». Решение этой проблемы было добавить путь ex47 каталога на сайт-пакетов, добавив две строки кода в module.py:

import sys 
sys.path.append('./ex47') 

И это работало нормально. Я могу импортировать module.py в ex47_tests.py, и я могу импортировать его в любом месте на моем компьютере.

После перехода к примеру 48 я создал точно такие же каталоги, файлы, я добавил путь к ex48/и продолжаю получать 'No module named 48'. Я искал интернет для разных решений, ни один из них не работает. Добавление __init__.py в скелет не помогает.

Эта проблема является основной базой, однако она не представлена ​​новым программистам на языке python. Кстати, я хочу решение, которое будет работать на любом компьютере, который будет работать с моим кодом.

Возникают ли такие проблемы в Linux?

ответ

3

Все, что вам нужно, чтобы увидеть, откуда, вы вызываете программу python. У меня следующие файлы.

C:\Users\kumarvivek\Desktop>tree /f skeleton 
Folder PATH listing for volume ???? 
Volume serial number is 6AE1-4919 
C:\USERS\KUMARVIVEK\DESKTOP\SKELETON 
│ __init__.py 
│ 
├───ex47 
│  mod.py 
│  mod.pyc 
│  __init__.py 
│  __init__.pyc 
│ 
└───tests 
     ex47_tests.py 
     __init__.py 


C:\Users\kumarvivek\Desktop> 

со следующим содержанием:

C:\Users\kumarvivek\Desktop>type skeleton\ex47\mod.py 
import os 
x = "C:\\Users\\kumarvivek\\Desktop\\skeleton\\ex47\\module.py" 
directoryPath= os.path.dirname(x) 
fileName = os.path.basename(x) 
print "\nFilePath:  %s\nDirectoryPath: %s\nFileName:  %s\n" %(x, directo 
ryPath, fileName) 
C:\Users\kumarvivek\Desktop> 

И

import sys 

# If the Current Working directory is skeleton 
# C:\Users\kumarvivek\Desktop\skeleton>python C:\Users\kumarvivek\Desktop\skeleton\tests\ex47_tests.py 
# 
# sys.path.append(r"..\skeleton") 

# If the Current Working directory is any of these "tests" or "ex47" 
# C:\Users\kumarvivek\Desktop\skeleton\tests>python C:\Users\kumarvivek\Desktop\skeleton\tests\ex47_tests.py 
# C:\Users\kumarvivek\Desktop\skeleton\ex47> 
# 
# sys.path.append(r"..\..\skeleton") 

sys.path.append(r"..\..\skeleton") 


from ex47 import mod 

print mod.x , mod.directoryPath, mod.fileName 
+0

Это работало хорошо. Большое спасибо. – oshiri

Смежные вопросы