假设我有以下目录结构:
workspace/
__init__.py
ys_manage/
__init__.py
manage.py
ys_utils/
__init__.py
project_dicts.py
现在,假设我需要访问project_dicts.py
in manage.py
。还有,我的$PATH
包括/home/rico/workspace/ys_manage
.
我需要能够跑步manage.py
从我机器上的任何目录仍然可以访问project_dicts.py
.
My $PYTHONPATH
只有/home/rico/workspace
.
如果我将以下内容包含在manage.py
我可以运行该文件~/workspace/ys_manage
但其他地方没有。
import sys
sys.path.append('..')
from ys_utils import project_dicts
看来'..'
给出文件运行目录的相对路径,而不是文件所在目录的相对路径。它是否正确?
我想尝试使用ys_manage/__init__.py
导入project_dicts.py
这样它就可以在manage.py
普遍。这是一个好主意吗?
我从来没有用过__init__.py
对于“包创建者”以外的任何人。也就是说,我从未将它用于初始化目的。也许我做错了。
内容ys_manage/__init__.py
:
import sys
sys.path.append('..')
from ys_utils import project_dicts
我应该包括一些东西吗manage.py
寻找这个进口?
当我尝试跑步时manage.py
我收到以下错误:
NameError: global name 'project_dicts' is not defined
作为次要问题,我需要workspace/__init__.py
?我真的不想拥有它,因为ys_manage
and ys_utils
(以及大约十几个其他软件包)都在修订控制之下并由其他几个开发人员使用......workspace
is not.