我正在测试我自己的软件包,但我正在努力导入它。我的包文件结构如下:
(您也可以查看我的Github存储库here)
在PyAdventures中我的 init .py,内容为
name="pyadventures"
所以我的问题是,当我在另一个python文件中导入它时,为什么它不起作用?
我跑:
import pyadventures
但是我收到以下错误:
No module named pyadventures
如果你能回答我的问题,那就太好了!
重要的是要注意包是在我的Python包目录中,而不是我展示的测试
新发现!在我的PyAdventures文件夹(Python实际使用的文件夹)中,该文件夹只有几个文件,而不是上面屏幕截图中的文件。
您可以使用pip install pyadventures
答案 0 :(得分:1)
啊,就像其他人在评论和回答中所说的那样:camelcase可能就是问题所在。 (为什么不将它全部命名为小写:pyadventures
? - 其他用户现在会像开发人员一样困惑:D。)
以前,我想,如果你没有安装它(本地),你可能会想要使用你的模块。我的以下答案适用于这种情况(使用本地文件夹中未安装的软件包):
在文档中,您可以阅读:
变量sys.path是一个确定字符串的字符串列表 解释器的模块搜索路径。它被初始化为默认值 路径取自环境变量PYTHONPATH,或来自a 如果未设置PYTHONPATH,则为内置默认值。您可以使用修改它 标准清单操作:
import sys sys.path.append('/ufs/guido/lib/python')
因此,在导入之前执行:
import sys
sys.path.append('/absolute/or/relative/path/to/your/module/pyadventures')
# Now, your module is "visible" for the module loader
import pyadventures
或者,您可以将pyadventures模块文件夹本地放在您启动python的工作目录中,然后执行
import pyadventures
但是,设置在一个地方只保留一个版本并从其他地方/脚本引用这个版本要容易得多。 (否则,您有多个副本,并且很难跟踪多个副本的更改)。
据我所知,您的__init__.py
不需要包含任何内容。如果它是空的,它可以工作。它只是将您的目录标记为模块。
答案 1 :(得分:1)
简单。即使pip上列出的包是namd pyadventures
,在您的代码中该目录也称为PyAdventures
。这就是python所知道的。我跑import PyAdventures
并且运行正常。