簡體   English   中英

使用`setup.py`安裝軟件包后運行`chmod`

[英]Running `chmod` after installing a package using `setup.py`

假設我有一個程序包,該程序包在代碼中的某個地方調用可執行文件(例如,第三方c / java-program)。 讓我們進一步假設,該應用程序足夠小/瑣碎,無法與軟件包捆綁在一起。 例如,一個可執行文件( cfoo )。

我可以繼續,然后將文件放入以下結構:

.
|-- foo
|   |-- __init__.py
|   |-- __init__.pyc
|   |-- core.py
|   |-- corebin
|   |   `-- cfoo
|   `-- foomain.py
`-- setup.py

並如下准備setup.py

from setuptools import setup

setup(
    name='foo',
    version='1.0',
    packages=['foo'],
    scripts=['foo/foomain.py'],
    package_data={'foo': ['corebin/*']},
    zip_safe=False
)

這將允許我正確安裝軟件包。 稍后,在打包代碼中,我可以這樣做:

from subprocess import call

import pkg_resources as res

def main():
    fn = res.resource_filename('foo', 'corebin/cfoo')
    print "Resource located at:", fn
    call([fn])

不幸的是,將在設置可執行標志的情況下安裝可執行文件。 即使原始文件已設置。 setup.py腳本的末尾添加chmod調用並不容易,因為需要首先弄清楚正確的安裝路徑。 我嘗試使用resource_filename但是返回了本地文件(如“預安裝”中所示)。

如何解決這個問題? 還要考慮virtualenv ...

我正在將我的評論提升為答案:

如果使用scripts關鍵字安裝它,它將獲得正確的模式(並安裝在適當的bin /目錄中)。

安裝后如何對軟件包中包含的文件執行某些操作?

這個問題似乎可以解決相同的情況,並且看起來有一個合理的答案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM