Python 进口自制包装
我正在测试我自己的软件包,但我很难导入它。我的包文件结构如下: (您也可以查看我的Github存储库) 在PyAdventures中是我的init.py,内容为Python 进口自制包装,python,Python,我正在测试我自己的软件包,但我很难导入它。我的包文件结构如下: (您也可以查看我的Github存储库) 在PyAdventures中是我的init.py,内容为 name="pyadventures" 所以我的问题是,当我在另一个python文件中导入它时,它为什么不工作 我运行: import pyadventures 但我得到了以下错误: No module named pyadventures 如果你能回答我的问题那就太好了 需要注意的是,包位于我的Python包目录中,而不是我展
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上列出的包是namdpyadventures
,但在您的代码中,该目录被称为pyadventures
。这就是python所知道的。我运行了导入PyAdventures,效果很好。简单。尽管pip上列出的包是namdpyadventures
,但在您的代码中,该目录被称为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。