假设我有以下目录结构:
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
.
我$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
和ys_utils
(以及大约十几个其他包)都处于修订控制之下并被其他几个开发人员使用......workspace
不是。