从子目录或相对路径导入包
importing a package from a subdir or relative path
这是我的目录设置:
mydir
├── script1.py
└── shared
├── otherstuff
├── script2.py
└── pkg
├── box.py
└── __init__.py
script2.py
以
开头
import pkg
而且效果很好。当我在 script1.py
中包含同一行时,我得到:
Traceback (most recent call last):
File "script1.py", line 1, in <module>
import pkg
有没有什么好的方法可以让语法在 script1.py
中如此简单?在过去的一个小时里,我一直在阅读有关 PYTHONPATH
和 sys.path
的内容,但我正在尝试为我的存储库提供一些基本功能,我不敢相信它需要修改 PYTHONPATH
每次我想 运行 一个脚本。
我在这里错过了什么?让 pkg
进入 script1.py
的最佳方法是什么?
你必须做的:
from shared import pkg
此外,您的 shared
目录应该有一个 __init__.py
文件
我在 python 3.x 测试过,你可以做 -
import shared.pkg
或
from shared import pkg
如果您不想在 shared
中创建 __init__.py
文件并使用 import shared.pkg
,您可以通过以下方式解决此问题:
import sys
sys.path.insert(0, 'shared')
import pkg
这是我的目录设置:
mydir
├── script1.py
└── shared
├── otherstuff
├── script2.py
└── pkg
├── box.py
└── __init__.py
script2.py
以
import pkg
而且效果很好。当我在 script1.py
中包含同一行时,我得到:
Traceback (most recent call last):
File "script1.py", line 1, in <module>
import pkg
有没有什么好的方法可以让语法在 script1.py
中如此简单?在过去的一个小时里,我一直在阅读有关 PYTHONPATH
和 sys.path
的内容,但我正在尝试为我的存储库提供一些基本功能,我不敢相信它需要修改 PYTHONPATH
每次我想 运行 一个脚本。
我在这里错过了什么?让 pkg
进入 script1.py
的最佳方法是什么?
你必须做的:
from shared import pkg
此外,您的 shared
目录应该有一个 __init__.py
文件
我在 python 3.x 测试过,你可以做 -
import shared.pkg
或
from shared import pkg
如果您不想在 shared
中创建 __init__.py
文件并使用 import shared.pkg
,您可以通过以下方式解决此问题:
import sys
sys.path.insert(0, 'shared')
import pkg