Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 进口自制包装_Python - Fatal编程技术网

Python 进口自制包装

Python 进口自制包装,python,Python,我正在测试我自己的软件包,但我很难导入它。我的包文件结构如下: (您也可以查看我的Github存储库) 在PyAdventures中是我的init.py,内容为 name="pyadventures" 所以我的问题是,当我在另一个python文件中导入它时,它为什么不工作 我运行: import pyadventures 但我得到了以下错误: No module named pyadventures 如果你能回答我的问题那就太好了 需要注意的是,包位于我的Python包目录中,而不是我展

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

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

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

name="pyadventures"
所以我的问题是,当我在另一个python文件中导入它时,它为什么不工作

我运行:

import pyadventures
但我得到了以下错误:

No module named pyadventures
如果你能回答我的问题那就太好了

需要注意的是,包位于我的Python包目录中,而不是我展示的测试包

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


您可以使用
pip安装pyadventures

啊安装这个,就像其他人在评论和回答中所说的那样:camelcase可能是问题所在。(为什么不把它全部用小写字母命名:
pyadventures
?——否则用户将和它的开发者一样困惑:D。)

以前,我认为,如果您想在没有(本地)安装的情况下使用模块,可能会出现问题。我的以下回答适用于这种情况(使用本地文件夹中未安装的软件包):

在文档中,您可以阅读:

变量sys.path是一个字符串列表,用于确定 解释器的模块搜索路径。它被初始化为默认值 从环境变量PYTHONPATH或从 如果未设置PYTHONPATH,则为内置默认值。您可以使用 标准列表操作:

导入系统 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
但是,在一个地方只保留一个版本并从其他地方/脚本引用它要容易得多。(否则您有多个副本,并且难以跟踪多个副本上的更改)


据我所知,您的
\uuuu init\uuuu.py
不需要包含任何内容。如果它是空的,它就会工作。它只是将您的目录标记为一个模块。

啊,就像其他人在评论和回答中所说的那样:camelcase可能是问题所在。(为什么不把它全部用小写字母命名:
pyadventures
?——否则用户将和它的开发者一样困惑:D。)

以前,我认为,如果您想在没有(本地)安装的情况下使用模块,可能会出现问题。我的以下回答适用于这种情况(使用本地文件夹中未安装的软件包):

在文档中,您可以阅读:

变量sys.path是一个字符串列表,用于确定 解释器的模块搜索路径。它被初始化为默认值 从环境变量PYTHONPATH或从 如果未设置PYTHONPATH,则为内置默认值。您可以使用 标准列表操作:

导入系统 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
但是,在一个地方只保留一个版本并从其他地方/脚本引用它要容易得多。(否则您有多个副本,并且难以跟踪多个副本上的更改)


据我所知,您的
\uuuu init\uuuu.py
不需要包含任何内容。如果它是空的,它就会工作。它只是将您的目录标记为一个模块。

简单。尽管pip上列出的包是namd
pyadventures
,但在您的代码中,该目录被称为
pyadventures
。这就是python所知道的。我运行了导入PyAdventures,效果很好。

简单。尽管pip上列出的包是namd
pyadventures
,但在您的代码中,该目录被称为
pyadventures
。这就是python所知道的。我运行了
import PyAdventures
,效果很好。

您误解了
\uuu init\uuuuuuuuuy.py
的用途,您应该阅读如何使用。我建议将您定义的所有函数和类放在一个文件中,并将其命名为mylibrary.py,然后将其与mylibrary import MyClass中的
或mylibrary import my_函数中的
一起使用,直到您更加熟悉和精通python为止。@hcheung事实上,我是按照python文档进行打包的,这不是它的工作方式。我看到的另一件事是,您的文件是骆驼帽PyAdventures,而不是您的导入文件,即PyAdventures.Read and。您误解了
\uuu init\uuuuuuuuuuuuuuy
的目的,应该阅读如何使用。我建议将您定义的所有函数和类放在一个文件中,并将其命名为mylibrary.py,然后将其与mylibrary import MyClass中的
或mylibrary import my_函数中的
一起使用,直到您更加熟悉和精通python为止。@hcheung事实上,我是按照python文档进行打包的,这不是它的工作方式。我看到的另一件事是,您的文件是骆驼帽PyAdventures,而不是您的导入,即PyAdventures.Read and。