2016-03-31 11 views
0

私は、パッケージ自体を含むzipファイルとして配布するパッケージを作成しようとしています。残念ながら、少なくともvirtualenvから実行すると、zipには長いサブディレクトリが含まれます。setuptools:zipからlib/python3.5/site-packagesプレフィックスを削除します

. 
├── my_package 
│   └── __init__.py 
├── README.md 
└── setup.py 

setup.pyが含まれています:これは、プロジェクトのファイル構造である

from setuptools import setup, find_packages 

setup(
    name='my_package', 
    version='1.0.0', 
    author='my name', 
    author_email='[email protected]', 
    packages=find_packages('.'), 
    data_files=[('my_package', ['README.md'])], 
    zip_safe=True, 
) 

私はpython setup.py bdist_dumb --format zip --relativeを実行すると、私は次のような出力を得る:あなたが見ることができるように

running bdist_dumb 
running build 
running build_py 
creating build 
creating build/lib 
creating build/lib/my_package 
copying my_package/__init__.py -> build/lib/my_package 
installing to build/bdist.linux-x86_64/dumb 
running install 
running install_lib 
creating build/bdist.linux-x86_64 
creating build/bdist.linux-x86_64/dumb 
creating build/bdist.linux-x86_64/dumb/home 
creating build/bdist.linux-x86_64/dumb/home/sybren 
creating build/bdist.linux-x86_64/dumb/home/sybren/.virtualenvs 
creating build/bdist.linux-x86_64/dumb/home/sybren/.virtualenvs/packaging-test 
creating build/bdist.linux-x86_64/dumb/home/sybren/.virtualenvs/packaging-test/lib 
creating build/bdist.linux-x86_64/dumb/home/sybren/.virtualenvs/packaging-test/lib/python3.5 
creating build/bdist.linux-x86_64/dumb/home/sybren/.virtualenvs/packaging-test/lib/python3.5/site-packages 
creating build/bdist.linux-x86_64/dumb/home/sybren/.virtualenvs/packaging-test/lib/python3.5/site-packages/my_package 
copying build/lib/my_package/__init__.py -> build/bdist.linux-x86_64/dumb/home/sybren/.virtualenvs/packaging-test/lib/python3.5/site-packages/my_package 
byte-compiling build/bdist.linux-x86_64/dumb/home/sybren/.virtualenvs/packaging-test/lib/python3.5/site-packages/my_package/__init__.py to __init__.cpython-35.pyc 
running install_data 
creating build/bdist.linux-x86_64/dumb/home/sybren/.virtualenvs/packaging-test/my_package 
copying README.md -> build/bdist.linux-x86_64/dumb/home/sybren/.virtualenvs/packaging-test/my_package 
running install_egg_info 
running egg_info 
creating my_package.egg-info 
writing my_package.egg-info/PKG-INFO 
writing dependency_links to my_package.egg-info/dependency_links.txt 
writing top-level names to my_package.egg-info/top_level.txt 
writing manifest file 'my_package.egg-info/SOURCES.txt' 
reading manifest file 'my_package.egg-info/SOURCES.txt' 
writing manifest file 'my_package.egg-info/SOURCES.txt' 
Copying my_package.egg-info to build/bdist.linux-x86_64/dumb/home/sybren/.virtualenvs/packaging-test/lib/python3.5/site-packages/my_package-1.0.0-py3.5.egg-info 
running install_scripts 
creating /home/sybren/workspace/packaging-test/dist 
creating '/home/sybren/workspace/packaging-test/dist/my_package-1.0.0.linux-x86_64.zip' and adding '.' to it 
adding 'lib/python3.5/site-packages/my_package/__init__.py' 
adding 'lib/python3.5/site-packages/my_package/__pycache__/__init__.cpython-35.pyc' 
adding 'lib/python3.5/site-packages/my_package-1.0.0-py3.5.egg-info/dependency_links.txt' 
adding 'lib/python3.5/site-packages/my_package-1.0.0-py3.5.egg-info/PKG-INFO' 
adding 'lib/python3.5/site-packages/my_package-1.0.0-py3.5.egg-info/top_level.txt' 
adding 'lib/python3.5/site-packages/my_package-1.0.0-py3.5.egg-info/SOURCES.txt' 
adding 'lib/python3.5/site-packages/my_package-1.0.0-py3.5.egg-info/zip-safe' 
adding 'my_package/README.md' 
removing 'build/bdist.linux-x86_64/dumb' (and everything under it) 

をそれはパッケージをlib/python3.5/site-packagesに入れます。これは嫌です。パッケージにmy_package/*が含まれているようにしてください

私たちはmy_package*.egg-info/*がパックされるのを防ぐことができればさらに良いが、私の主な質問は接頭辞lib/python3.5/site-packagesを取り除くことです。

答えて

1

これは私が探している動作を提供するようです。しかし、例えば、特定のパラメータをsetup()に渡すなど、より洗練された解決策がある場合は、そのことを聞いてうれしいです。

from setuptools import setup, find_packages 
from setuptools.command.install import install 


class CustomInstall(install): 
    """Ensures the module is placed at the root of the zip file.""" 

    def initialize_options(self): 
     super().initialize_options() 
     self.prefix = '' 
     self.install_lib = '' 

setup(
    cmdclass={'install': CustomInstall}, 
    name='my_package', 
    version='1.0.0', 
    author='my name', 
    author_email='[email protected]', 
    packages=find_packages('.'), 
    data_files=[('my_package', ['README.md'])], 
    zip_safe=True, 
) 
関連する問題