【问题标题】:Wrong install location with pypi packaging for binary and script file二进制和脚本文件的 pypi 打包安装位置错误
【发布时间】:2020-12-02 07:05:33
【问题描述】:

我的setup.py 文件看起来像

$ cat setup.py 
from setuptools import setup
 
setup(
     name='user1-hello-world',
     version='0.20', 
     scripts=['user1-hello-world'] ,
     data_files=[('/usr/sbin/',['user1-bin2'])]
)

我有 1 个 python 脚本(user1-hello-world)和 1 个 elf 二进制文件(user1-bin2)

$ ls
user1-hello-world user1-bin2 setup.py

使用 twine 构建和上传,例如:

 python3 setup.py sdist bdist_wheel
 python3 -m twine upload --repository testpypi dist/*

将文件上传到 test.pypi.org 后。通过 pip 安装显示主目录下的文件。

/home/user/.local/bin/user1-hello-world
/home/user1/.local/lib/python3.8/site-packages/user1_hello_world-0.20.dist-info/*
/home/user1/.local/lib/python3.8/site-packages/usr/sbin/user1-bin2

我希望像/usr/sbin/user1-bin2 一样在/usr/sbin 下安装user1-bin2。如何做到这一点?感谢您的任何指点。

【问题讨论】:

    标签: python pip pypi twine


    【解决方案1】:

    首先,set the install location 通过将 $HOME/.pip/pip.conf 编辑为

    [global]
    target=usr/sbin
    

    或者只是使用--target usr/sbin

    然后,因为usr/sbin文件夹需要root权限,别忘了加个sudo(在linux上):

    sudo pip install your-package
    

    【讨论】:

    • 谢谢!我认为上述建议类似于 pip install --target /some/path 。我正在寻找setup.py 文件的解决方案。我读了data_files 选项应该可以工作,但在我的情况下它没有:(
    • @webminal.org 啊,我认为 --target 的工作方式与在配置文件中的工作方式相同。所以你想让你的包自动安装在这个特殊的文件夹中?
    • 是的,我希望user1-bin2 出现在/usr/sbin/user1-bin2
    • @webminal.org 我想它不可能强制安装位置作为包创建者,因为用户应该能够自己决定。
    猜你喜欢
    • 2020-09-04
    • 2011-03-27
    • 2014-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多