问题:
我无法在预期的目录结构(在 Lib/site-packages 下)中的 3.6.4 虚拟环境中安装源分发命名空间包。
背景:
我正在使用 2 个不同版本的 python 中的命名空间包。
当我使用 pkgutils 样式 ns 打包在 2.7.14 中构建包时,我可以安装并且目录结构按照我想要的方式展开。
当我在 3.6.4 中构建包时,会安装包,但未按预期创建目录结构。
设置:
我有 2 个虚拟环境。
在工作中,我使用 2.7.14 兼容的 pkgutils 命名空间包功能。我正在为这个虚拟环境使用 virtualenv 来确认安装,它会按照我的意愿安装。目录结构按预期显示在我的 venv/Lib/site-packages 中,因此 venv/Lib/site-packages/tools/sub_a 存在。
在非工作中,我使用每个 PEP420 的 venv 和隐式命名空间打包
这是我的 3.6.4 包目录结构:
tools
-sub_a
-__init__.py
-module.py
setup.py
README.rst
我的子包 init 里面只有以下内容:
name = 'sub_a'
这是我的 setup.py
from setuptools import setup
from codecs import open
from os import path
here = path.abspath(path.dirname(__file__))
with open(path.join(here, 'README.rst'), encoding='utf-8') as f:
long_description = f.read()
setup(
name='tools-sub-a',
version='1.0.0',
description='A sample Python project',
long_description=long_description,
url='none',
author='myuser',
author_email='myuser@host.com',
classifiers=[
'Development Status :: 3 - Alpha',
'Intended Audience :: Developers',
'Topic :: Software Development :: Build Tools',
'License :: Only For Internal Use',
'Programming Language :: Python :: 3.6.4'
],
keywords='none',
packages=['tools.sub_a'],
install_requires=[],
extras_require={},
package_data={},
data_files=[],
entry_points={},
project_urls={},
)
该包使用 python setup.py sdist 构建,我将 tar.gz 文件传输到虚拟环境目录根目录,然后运行
pip install --no-index --find-links=. tools-sub-a
这安装得很好,但是当我导航到虚拟环境 Lib/site-packages 目录时,tools/sub_a 目录结构不存在。
我看到了 tools_sub_a-1.0.0.dist-info,但没有看到预期的命名空间包目录。