附加 Pythonpath,从 windows 上的不同目录导入模块

Appending Pythonpath, importing modules from different directories on windows

我一直在使用 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。我收到 'No module named ex47' 错误。此问题的解决方案是通过将两行代码添加到 module.py:

来将 ex47 目录的路径添加到 site-packages
import sys
sys.path.append('./ex47')

这很好用。我可以将 module.py 导入到 ex47_tests.py 并且我可以将它导入我计算机上的任何位置。

转到示例 48 后,我创建了完全相同的目录、文件,我添加了 ex48/ 的路径,并且我一直收到 'No module named 48'。我在互联网上搜索了不同的解决方案,其中 none 有效。将 __init__.py 添加到骨架中没有帮助。

这个问题是非常基础的问题,但不会介绍给新的 python 程序员。 顺便说一句,我想要一个可以在任何可以使用我的代码的计算机上运行的解决方案。

Linux中是否出现此类问题?

您只需要查看从何处调用 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