【问题标题】:Why `setup.py install` does not update the script file?为什么 `setup.py install` 不更新脚本文件?
【发布时间】:2013-03-15 00:22:52
【问题描述】:

在setup.py文件中,我是这样写的:

from distutils.core import setup
setup(
    # skip a lot of information here..
    scripts = ["chilin2/ChiLin2.py"],
)

我第一次成功设置了我的包。过了一会儿,我将脚本的line 209 更新为:

$ sed -n 209p chilin2/ChiLin2.py
        macs2_on_merged.param["control_opt"] = "-c " + macs2_on_merged.input["control"]

然后再次运行setup.py

$ sudo python3 setup.py install
running install
running build
running build_py
running build_scripts
running install_lib
running install_scripts
changing mode of /usr/local/bin/ChiLin2.py to 755
running install_egg_info
Removing /usr/local/lib/python3.2/site-packages/chilin2-0.1-py3.2.egg-info
Writing /usr/local/lib/python3.2/site-packages/chilin2-0.1-py3.2.egg-info

但是,我发现脚本文件并没有改变..

$ sed -n 209p /usr/local/bin/ChiLin2.py
        macs2_on_merged["control_opt"] = "-c " + macs2_on_merged.input["control"]

我尝试了setup.py clean,然后又尝试了setup.py install,但这并没有解决问题。有人对此有想法吗?

(我发现包里的Chilin2.py比系统目录的时间戳更早,是不是setup.py install不更新的原因?有没有办法解决这个问题?)

【问题讨论】:

  • 一开始我以为是bugs.python.org/issue10374,但那个bug不一样。
  • 我也有同样的情况。我更改了一个功能,我卸载了包,删除了所有 pycache 目录。但是重新安装包后使用旧版本的功能。
  • 同样的问题,你找到解决办法了吗?
  • 2020 年同样的问题。

标签: python python-3.x pip setuptools setup.py


【解决方案1】:

尝试卸载此软件包,然后重新安装。

pip 可以卸载一个包:

pip uninstall *packagename*

【讨论】:

    【解决方案2】:

    我发现包中的Chilin2.py的时间戳比系统目录中的要早。

    这很奇怪。您能否通过以下步骤重现该错误:

    1. 创建脚本。
    2. setup.py 安装(带有 --install 或 --user 选项以避免 sudo)
    3. 编辑脚本。
    4. setup.py 安装
    5. ?

    如果你这样做了(即你在第一次安装后编辑了脚本),我不明白最新脚本的修改时间怎么会比安装的脚本早。

    这就是 setup.py install 不更新的原因吗?

    绝对是:distutils 比较文件修改时间以查看是否需要重新构建(对于脚本,构建阶段包括将文件复制到临时构建目录并调整 shebang)。

    有没有办法解决这个问题?

    $ touch chilin2/ChiLin2.py
    

    【讨论】:

      猜你喜欢
      • 2011-05-29
      • 2012-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-22
      • 1970-01-01
      • 2016-08-06
      相关资源
      最近更新 更多