我目前继承了一个看起来像这样的代码库。
project
manage.py
|_ config
|_ settings
|_ wsgi.py
|_ project
|_ app1
|_ app2
|.... <-- many more Django apps
|_ a_new_app
|_ __init__.py
|_ run.py
|_ foo.py
|_ bar.py
我添加了一个新的应用程序,其中包含一些.py
文件,这些文件也从其他应用程序导入到相同的程序包中,也从项目中的其他应用程序包导入。一切都好,直到我尝试跑步
python project/a_new_app/run.py
然后我开始出现导入错误,这里是run.py
的外观。
# run.py
from project.a_new_app.foo import Foo
class App():
def method(self, key):
data = {"some-key": Foo}
return data.get(key)
.... more methods here
if __name__ == "__main__":
app = App()
app.loop_forever()
我收到此错误
File "project/a_new_app/run.py", line 7, in <module>
from project.a_new_app.foo import Foo
ImportError: No module named project.a_new_app.foo
我的工作目录是/user/me/PycharmProjects/project
,谢谢。
答案 0 :(得分:1)
from project.a_new_app.foo import Foo
要使此导入正常进行,您需要将外部project
目录(包含manage.py
和内部project
的目录)放置在Python路径上。
但是,run.py
比project/a_new_app
还要深两个目录。因此,您需要在模块顶部的python路径中添加../..
。
import sys
sys.path.append('../..')
from project.a_new_app.foo import Foo
...