我一直在使用Learn Python The Hard Way而且我被困在示例48中。在示例47中,我必须创建如下所示的目录:
skeleton
|--ex47
|--module.py
|--__init__.py
|--tests
|--ex47_tests.py
|--__init__.py
从现在开始,我必须将ex47 / module.py导入tests / ex47_tests.py。我收到了名为ex47'的无模块。错误。这个问题的解决方案是通过在module.py中添加两行代码来将ex47目录的路径添加到site-packages:
import sys
sys.path.append('./ex47')
这很好用。我可以将module.py导入ex47_tests.py,我可以将它导入我的计算机上的任何位置。
移动到示例48后,我创建了完全相同的目录,文件,我添加了ex48 /的路径,并且我继续接收'No module named 48'
。我在互联网上寻找不同的解决方案,但没有一个能够正常工将__init__.py
添加到骨架中并没有帮助。
这个问题是超级基本问题,但它并没有引入新的python程序员。 顺便说一句,我想要一个适用于任何可以使用我的代码的计算机的解决方案。
Linux中是否会出现此类问题?
答案 0 :(得分: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