[英]Unable to import child from parent package python
我目前正在用python编写需要单元测试的Web应用程序,但是,每当我尝试导入另一个父目录中的子模块时,都会出现以下错误:
$ python my_package/tests/main.py
Traceback (most recent call last):
File "my_package/tests/test.py", line 1, in <module>
from my_package.core.main import hello
ImportError: No module named my_package.core.main
hello = "Hello"
from my_package.core.main import hello
print(hello, "world!")
$ tree
.
└── my_package
├── __init__.py
├── core
│ ├── __init__.py
│ └── main.py
└── tests
├── __init__.py
└── test.py
有人可以解释我在做什么错吗? 感谢您的时间。
修改sys.path
被认为是一种反模式 。 如果希望您的包可用于所有子包,则最好使用setup.py
开发模式。 在项目的根目录中创建setup.py
:
from setuptools import setup
setup(
name="you_project",
version="0.0.0",
packages=['my_package', ],
install_requires=['requirement1', 'requirement2'],
)
然后运行:
$python setup.py develop
之后,您将可以从Python环境中的任何位置导入my_packege
。
您的my_package不在PYTHONPATH中。 在您的test.py顶部添加以下内容。 请注意,test.py位置的任何更改都会影响package_path
from os.path import dirname, abspath
import sys
package_path = dirname(dirname(abspath(__file__)))
sys.path.append(package_path)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.