我使用下面的解决方案来导入依赖项。 我发现如果我在Pycharm中运行代码而不是在终端中运行此解决方案。 终端中的错误消息是“找不到graphics.primitive”。 我正在使用Mac和Python 3.5。 为什么我看到终端和Pycharm的不同行为? 我怎样才能使解决方案适用于两者?
http://chimera.labs.oreilly.com/books/1230000000393/ch10.html#_solution_169
制作模块的分层包 问题
您希望将代码组织到一个由分层模块集合组成的包中。
解决方案
制作包结构很简单。只需按照您的意愿在文件系统中组织代码,并确保每个目录都定义 init .py文件。例如:
graphics/
__init__.py
primitive/
__init__.py
line.py
fill.py
text.py
formats/
__init__.py
png.py
jpg.py
完成此操作后,您应该能够执行各种导入语句,例如:
import graphics.primitive.line
from graphics.primitive import line
import graphics.formats.jpg as jpg
答案 0 :(得分:1)
您需要确保图形包位于Python搜索路径中。 PyCharm通过如下扩展sys.path
来实现这一目的:
import sys
sys.path.extend(['/Users/hackworth/Development/graphics_parent_dir', '/Applications/PyCharm.app/Contents/helpers/pycharm', '/Applications/PyCharm.app/Contents/helpers/pydev'])
您可以在代码中使用适当的路径替换/Users/hackworth/graphics_parent_dir
,或者可以在PYTHONPATH环境变量中包含graphics_parent_dir的完整路径。有关详细信息,请参阅Python documentation。
另一种选择是将graphics
包放入系统默认搜索的位置。