【问题标题】:How to tell from setup.py if the module is being installed in editable mode如何从 setup.py 中判断模块是否以可编辑模式安装
【发布时间】:2018-12-19 21:35:06
【问题描述】:

我当前的 setup.py 将 git commit 哈希写入一个文件中,模块在安装后可以访问该文件。但是,我想在开发模块时禁用它,因为 setup.py 文件不会被触发两次并且哈希值不准确。这给我们带来了一个问题:

有没有办法从 setup.py 中判断模块是否以可编辑模式安装?即,

pip install -e .

我发现了一个类似的问题here,但在我的情况下,即使是“hack”也不起作用,因为模块将直接使用 git 安装,并且即使在安装过程中正常安装,.git 目录也会存在。

【问题讨论】:

    标签: python git setuptools setup.py


    【解决方案1】:

    只需覆盖正确的命令。 installpip install . 上运行,developpip install --editable . 上运行。

    # setup.py
    from distutils import log
    from setuptools import setup
    from setuptools.command.install import install as install_orig
    from setuptools.command.develop import develop as develop_orig
    
    
    class develop(develop_orig):
    
        def run(self):
            self.announce('this code will run on editable install only', level=log.INFO)
            super().run()
    
    
    class install(install_orig):
    
        def run(self):
            self.announce('this code will run on normal install only', level=log.INFO)
            super().run()
    
    
    setup(
        name='spam',
        cmdclass={'install': install, 'develop': develop}
    )
    

    测试一下:

    $ pip install . -vvv | grep "this code"                                
      this code will run on normal install only
    $ pip install -e . -vvv | grep "this code"
      this code will run on editable install only
    

    【讨论】:

      猜你喜欢
      • 2017-09-07
      • 1970-01-01
      • 1970-01-01
      • 2011-08-27
      • 2012-11-04
      • 2012-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多