问题标签 [namespace-package]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 使用 setuptools,命名空间包 __init__.py 文件何时消失?
setuptools文档非常明确地将代码__init__.py
从命名空间添加到文件中:
您不得在命名空间包的
__init__.py
. 即使它在开发过程中似乎可以工作,或者当项目安装为 .egg 文件时,当使用“系统”打包工具安装项目时,它就无法工作——在这种情况下,__init__.py
文件将不会被安装,更不用说执行了.
然而,我不明白这些“系统”打包工具是什么。这些是什么?__init__.py
我怎样才能重现文件消失的这种情况?
python-2.7 - pip 卸载命名空间子包
如何使用 pip 卸载提供命名空间包的子包的发行版之一,而不会破坏仅使用其余发行版中此命名空间包的子包的程序?
我有 2 个发行版 (distribution{1,2}),提供命名空间包 (namespace1) 的 2 个子包 (package{1,2}):
分布1/命名空间1/__init__.py:
分布1/命名空间1/package1/__init__.py:
分布1/命名空间1/package1/module1.py:
分布1/setup.py:
分布2/命名空间1/__init__.py:
分布2/命名空间1/package2/__init__.py:
分布2/命名空间1/package2/module2.py:
分布2/setup.py:
和一个测试程序:
主要.py:
当我安装两个发行版并卸载其中一个(distribution2)时,示例程序失败:
它在“pip install --egg”时有效。在分发源文件夹中使用。但是由于鸡蛋被认为不推荐使用轮子,有没有没有这个“--egg”选项的解决方案?
环境:
- Python 2.7.9
- 安装工具 14.3.1
- 点 6.1.1
- 车轮 0.24.0
python - Python 命名空间包的导入问题
我正在尝试使用 Python命名空间包概念将我的库拆分到多个目录中。一般来说,它可以工作,但我在将名称导入项目包级别时遇到问题。
我的项目结构如下:
project1/coollibrary/__init__.py
project1/coollibrary/foomodule.py
project2/coollibrary/__init__.py
project2/coollibrary/barmodule.py
这两个项目都在 PATH 中:
我正在从这里运行代码:
如何修复代码,以便我可以直接从包中foo
导入。此外,是否有适用于 Python2.7 和 Python3.4 的解决方案(不需要其他版本)。bar
coollibrary
python - 带有命名空间包的 pyinstaller
我有一个模块/包结构,我在其中使用命名空间包,我有多个用户制作的库,我将它们保存在单独的存储库中,并且它们具有相当通用的名称,例如 db、io、utils 等。为了避免与其他包冲突,我有一个名为 acme 的顶级/命名空间包,即我的包是 acme.io、acme.db、acme.utils 等。为了完成这项工作,所有 acme 文件夹中的 __init__.py 都有以下几行
这在运行使用 python 中的这些包的软件时效果很好。
但后来我尝试使用 pyinstaller 制作 EXE。pyinstaller 只找到其中一个包。我尝试将 pathex 设置为每个库所在的文件夹:
在 dbrepo、iorepo 和 utilsrepo 文件夹中,有一个名为 acme 的文件夹,里面有上面提到的 __init__.py 文件和相应的包,即 db、utils 和 io,其中又有一个 __init__.py 文件。
但是 pyinstaller 只能找到 acme 和 acme.db 包。或者它只查找 pathex 变量中首先列出路径的包。
关于如何使这项工作的任何提示?
谢谢
python - 命名空间包的树形结构
我有一个名为的包networkx-metis
,它具有以下树结构
networkx.addons.metis
应该作为命名空间包安装在networkx核心包中。上面两个__init__.py
包含单行代码
现在我有一些具体的问题,
networkx
核心包应该有哪些变化?我应该把空__init__.py
文件放在哪里?namespace_packages
of 的insetup()
的值应该是setup.py
多少networkx-metis
?
python - 安装 Python 库后自动创建的奇怪文件
我有一个依赖于 C 库的 Python 库,所以我使用 Cython 来处理它。虽然我设法包装了库并准备好安装,但我遇到了一个奇怪的问题(注意:为了非广告,我没有使用库的名称)。
我有以下目录结构:
setup.py
应该转换_lib.pyx
为,_lib.so
可以很容易地被 Python 导入。此外,library.module
应该作为命名空间包安装,因此lib.__init__.py
包含 PEP420 所需的单行代码。
但是当我这样做时:
在检查.egg
创建后,我发现一个_lib.py
created 里面module
有以下几行
虽然_lib.py
与 一起存在,但_lib.so
只要lib.py
imports _lib
,它就会导入 _lib.py 文件,而不是导入_lib.so
C 库的实际 Python 包装器。
我想知道为什么_lib.py
要创建以及如何避免它。
python - 命名空间包冲突
我有一个正在处理的包(LDB_Algebra)。它有一个额外的依赖于我创建的另一个包(LDB_LAPACK)。我创建了一个 virtualenv 并安装了每个包,如下所示:
__init__.py
每个在 ldb 包下的文件都有以下内容:
问题:
问题是当我尝试使用ldb.algebra
它时报告它找不到包。只是为了确保它没有完全丢失我尝试导入的所有内容ldb.lapack
并且工作正常。这向我表明我遇到了命名空间包问题。似乎在这里提出了类似的问题(遗憾的是没有答案)。在调查我的 virtualenv 的目录结构后,我发现ve_pypy/site-packages/
在命名空间包下有一个文件夹,ldb
其中包含lapack
包但不包含algebra
包。我还看到了一个 egg 文件,LDB_Algebra-0.3.2-py2.7.egg
. 在ldb
目录中的这个 egg 文件中是一个__init__.py
带有适当命名空间声明的文件(如上)。大概这应该是它得到的地方ldb.algebra
包,但它不在那里。
问题:
任何人都可以通过参考确认我所看到的是一个已知问题(即我不只是做一些轻微的错误导致所有这些麻烦)?egg 和 w/e 创建的 pip install 方法(
ldb
下的包目录site-packages
)根本不兼容吗?假设第一个问题的答案是我的软件包安装方法存在根本缺陷,是否有更简单的方法可以
LDB_LAPACK
从 pypi 安装软件包并LDB_Algebra
从我的本地目录安装软件包?我不是 setuptools wiz 或任何其他人,所以答案可能非常简单(不要忽视显而易见的问题)。
python - 导入 Python 命名空间包的本地测试版本
我想知道如何导入 Python 2.7 命名空间包的本地测试版本。在此示例中,包Ska.engarchive
是Ska
根目录下的命名空间包。(这种结构是由遗产强加给我的)。
这个例子表明,即使设置sys.path
为从本地目录开始,包的安装版本也会被导入,而不是本地版本。
我认为这个问题与命名空间包在 Python 2 中实现的方式有关,无论如何命名空间路径总是在列表的前面。但也许有一些解决方法?我花了一些时间挖掘site
包文档,但也许我只是没有看到正确的东西。
上面的示例使用的是 Anaconda Python 发行版。有趣的是,如果我使用来自 ActiveState 的非常旧的 Python 版本,则该示例具有导入本地包的预期结果:
任何帮助将不胜感激!
python - 我应该默认创建新的 python 包作为命名空间包吗?
Python 3.3 具有隐式命名空间包 (PEP420),在 Python 2.7 中,可以通过在 __init__py 中添加两行来将包标记为命名空间包。请参阅如何在 python 中创建命名空间包。
鉴于包启用的功能,看起来新包应该默认创建为命名空间包。
普通的 python 包应该只在明显需要“封闭”包的特殊情况下使用。
这种方法有什么缺点?
python - 错误:尚不支持命名空间包:跳过包“pywintypes”
我正在尝试使用 Py2exe 为使用 webview 加载网站的应用程序创建一个可执行文件,该文件是使用 pip 上的 pywebview 包创建的,但我不断收到此错误消息:-
在以下链接上的 github 上执行示例时会弹出错误:- https://github.com/r0x0r/pywebview/blob/master/examples/py2exe_setup.py