【发布时间】:2021-12-29 01:40:25
【问题描述】:
我在我的 Django 项目 Finchin 中有一个脚本 pycharm_test.py 在我的 django 应用程序 universe 中,它从我自己的应用程序和来自第三方 stellar_sdk 的一些其他模块导入 Cashpool:
# /Users/jonas/PycharmProjects/Finchin/apps/universe/pycharm_test.py
import sys
sys.path.append("/Users/jonas/PycharmProjects/Finchin")
from apps.cashpool.models import Cashpool # doesn't work
from stellar_sdk.asset import Asset # works
from stellar_sdk.keypair import Keypair # works
def test():
print('test')
test()
现在,当我使用 rightclick/run 'pycharm_test' 在 Pycharm 中运行此脚本时,它会引发
/Users/jonas/PycharmProjects/Finchin/venv/bin/python /Users/jonas/PycharmProjects/Finchin/apps/universe/pycharm_test.py
Traceback (most recent call last):
File "/Users/jonas/PycharmProjects/Finchin/apps/universe/pycharm_test.py", line 1, in <module>
from apps.cashpool.models import Cashpool
ModuleNotFoundError: No module named 'apps.cashpool'; 'apps' is not a package
注意:当我删除 from apps.cashpool.models import Cashpool 时,脚本会正常运行。所以不知何故 stellar_sdk 导入工作。
当我尝试时
..
from cashpool.models import Cashpool
..
上升
django.core.exceptions.ImproperlyConfigured:请求设置 INSTALLED_APPS,但未配置设置。您必须在访问设置之前定义环境变量 DJANGO_SETTINGS_MODULE 或调用 settings.configure()。
This 没有帮助,我检查了以下内容:
- 所有目录都有一个
__init__.py - 所有应用都包含在
settings.py - 系统路径看起来令人满意
- 解释器链接到 venv
# settings.py
from pathlib import Path
# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent
# print(sys.path)
['/Users/jonas/PycharmProjects/Finchin/apps/universe',
'/opt/homebrew/Cellar/python@3.9',
'/Users/jonas/PycharmProjects/Finchin/apps',
'/Users/jonas/PycharmProjects/Finchin',
'/Applications/PyCharm.app/Contents/plugins/python/helpers/pycharm_display',
'/opt/homebrew/Cellar/python@3.9/3.9.6/Frameworks/Python.framework/Versions/3.9/lib/python39.zip',
'/opt/homebrew/Cellar/python@3.9/3.9.6/Frameworks/Python.framework/Versions/3.9/lib/python3.9',
'/opt/homebrew/Cellar/python@3.9/3.9.6/Frameworks/Python.framework/Versions/3.9/lib/python3.9/lib-dynload',
'/Users/jonas/PycharmProjects/Finchin/venv/lib/python3.9/site-packages',
'/Applications/PyCharm.app/Contents/plugins/python/helpers/pycharm_matplotlib_backend']
目录:
【问题讨论】:
-
Python 路径设置不正确。为了让它工作,包含“apps”的目录必须在
sys.path。你当然可以在那里添加它,只要你知道如何到达那里,比如“../..”。 -
@TimRoberts 谢谢,我如何将它添加到 Mac OS 上的 sys.path 中?
-
操作系统无关紧要。你只需做
import sys/sys.path.append( ... ) -
@TimRoberts 谢谢,我将它包含在我的模块中并收到相同的错误。我是否必须附加包含相对于模块的“应用程序”的 url?
-
您不需要其他行,只需要以“Finchin”结尾的行。只要
apps包含__init__.py,它就可以工作。您的树中有另一个名为apps的目录吗?