进口自制包装

时间:2018-05-26 01:06:54

标签: python

我正在测试我自己的软件包,但我正在努力导入它。我的包文件结构如下:

File Structure

(您也可以查看我的Github存储库here

在PyAdventures中我的 init .py,内容为

name="pyadventures"

所以我的问题是,当我在另一个python文件中导入它时,为什么它不起作用?

我跑:

import pyadventures

但是我收到以下错误:

No module named pyadventures

如果你能回答我的问题,那就太好了!

  

重要的是要注意包是在我的Python包目录中,而不是我展示的测试

新发现!在我的PyAdventures文件夹(Python实际使用的文件夹)中,该文件夹只有几个文件,而不是上面屏幕截图中的文件。

New Discovery

您可以使用pip install pyadventures

进行安装

2 个答案:

答案 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并且运行正常。