背景:
我正在使用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文件传输到虚拟环境目录root,然后运行
pip install --no-index --find-links=. tools-sub-a
这样安装很好,但是当我导航到虚拟环境Lib / site-packages目录时,tools / sub_a目录结构不存在。
我看到了tools_sub_a-1.0.0.dist-info,但没有预期的命名空间包目录。