首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python3源代码外构建

Python3源代码外构建
EN

Stack Overflow用户
提问于 2019-11-28 10:46:38
回答 2查看 564关注 0票数 4

我想要什么

将由build生成的所有生成输出( distmy_package.egg_info等)放入特定目录中。

项目结构

代码语言:javascript
复制
awesome_pkg/
    __init__.py
    mod.py
my_fancy_app/
   __init__.py
   __main__.py
target/
requirements.txt
setup.py

__main__.py

代码语言:javascript
复制
def main():
    print("Hello virtual environment")

if __name__ == '__main__':
    main()

setup.py

代码语言:javascript
复制
import setuptools

setuptools.setup(
        name = "my_fancy_app",
        version="0.0.1",
        author="Me Myself",
        author_email="me@my.self",
        description="Some description",
        long_description="Some long description",
        packages=setuptools.find_packages(),
        entry_points={
            'console_scripts': [ 'hlpth = my_fancy_app.__main__:main' ]
        },
        classifiers=[
            "Programming Language :: Python :: 3.7",
            "License :: OSI Approved :: MIT License",
            "Operating System :: OS Independent",
        ],
        python_requires='>=3.7'
)

__init__.py是一个空脚本

我试过什么

我尝试使用特定的工作目录简单地运行setup.py

代码语言:javascript
复制
cd target
python3.7 ../setup.py bdist_wheel

问题

问题是它并没有真正包装任何东西:

代码语言:javascript
复制
$ python3.7 ../setup.py bdist_wheel 
running bdist_wheel                                                                                                                                                                                                                    
running build                                                                                                                                                                                                                          
installing to build/bdist.linux-x86_64/wheel                                                                                                                                                                                           
running install                                                                                                                                                                                                                        
running install_egg_info                                                                                                                                                                                                               
running egg_info                                                                                                                                                                                                                       
creating my_fancy_app.egg-info                                                                                                                                                                                                         
writing my_fancy_app.egg-info/PKG-INFO                                                                                                                                                                                                 
writing dependency_links to my_fancy_app.egg-info/dependency_links.txt                                                                                                                                                                 
writing entry points to my_fancy_app.egg-info/entry_points.txt                                                                                                                                                                         
writing top-level names to my_fancy_app.egg-info/top_level.txt                                                                                                                                                                         
writing manifest file 'my_fancy_app.egg-info/SOURCES.txt'                                                                                                                                                                              
reading manifest file 'my_fancy_app.egg-info/SOURCES.txt'                                                                                                                                                                              
writing manifest file 'my_fancy_app.egg-info/SOURCES.txt'                                                                                                                                                                              
Copying my_fancy_app.egg-info to build/bdist.linux-x86_64/wheel/my_fancy_app-0.0.1-py3.7.egg-info                                                                                                                                      
running install_scripts                                                                                                                                                                                                                
creating build/bdist.linux-x86_64/wheel/my_fancy_app-0.0.1.dist-info/WHEEL                                                                                                                                                             
creating 'dist/my_fancy_app-0.0.1-py3-none-any.whl' and adding 'build/bdist.linux-x86_64/wheel' to it                                                                                                                                  
adding 'my_fancy_app-0.0.1.dist-info/METADATA'                                                                                                                                                                                         
adding 'my_fancy_app-0.0.1.dist-info/WHEEL'                                                                                                                                                                                            
adding 'my_fancy_app-0.0.1.dist-info/entry_points.txt'                                                                                                                                                                                 
adding 'my_fancy_app-0.0.1.dist-info/top_level.txt'                                                                                                                                                                                    
adding 'my_fancy_app-0.0.1.dist-info/RECORD'                                                                                                                                                                                           
removing build/bdist.linux-x86_64/wheel                                                                                                                                                                                                

但是,从源根目录运行它可以很好地工作,python3.7 setup.py bdist_wheel和两个包都绑定到wheel存档中。

有没有办法在源代码之外进行这样的构建?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-11-28 16:08:59

在找到适合您的用例的setuptools、命令和选项的正确组合之前,您将不得不四处游玩。例如,我在以下bdist_wheel组合中取得了一些成功

代码语言:javascript
复制
python3 setup.py egg_info --egg-base target build --build-base target/build bdist_wheel --dist-dir target/dist
票数 2
EN

Stack Overflow用户

发布于 2019-11-28 11:17:41

可以为每种构建类型指定输出目录,如下所示:

代码语言:javascript
复制
python setup.py sdist -d target/ bdist -d target/ bdist_wheel -d target/

要摆脱在构建过程中创建的任何临时build等dirs/文件,请在构建之后运行以下命令:

代码语言:javascript
复制
python setup.py clean --all

注意,从它所在的目录运行setup.py通常是最安全的。在内部,它可能有引用src、libs等内容的相对路径,如果您在运行时位于不同的位置,则这会中断。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59087037

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档