3

问题:

我无法在预期的目录结构(在 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,但没有看到预期的命名空间包目录。

4

0 回答 0