簡體   English   中英

在 python 開發環境中運行入口點 console_script

[英]Running entry point console_script in python development environment

作為 python package 開發人員運行使用入口點的控制台腳本的過程是什么?

我有一個帶有setup.py的 python 項目。 在里面,我有一個

 entry_points={
        'console_scripts': [
            'myscript=mypackage.myscript.__main__:main',
        ]
    },

如果我執行python setup.py develop最終會得到virtualenv/bin中的包裝腳本,但是當我運行它們時會出現錯誤:

ImportError:找不到入口點('console_scripts','myscript')

(如果我進行pip install. ,上述方法確實有效。)

現在,從項目的頂部,我可以復制包裝腳本並手動執行:

$ python
Python 3.6.8 (default, Apr 25 2019, 21:02:35) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-36)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from pkg_resources import load_entry_point
>>> load_entry_point('mypackage', 'console_scripts', 'myscript')
<function main at 0x7f7b971bcea0>
>>> 

所以,我從中得到的是virtualenv virtualenv/bin/myscript在 virtualenv 中尋找 package 並且當我從我的開發環境頂部手動運行它時,它會在我的當前目錄中查找包。

不過,我不想將它從我的virtualenv中運行出來。 我不想pip install. 每次我想嘗試修改我的腳本時。

這里的預期工作流程是什么? 手動運行python -m mypackage.myscript 我寧願像用戶一樣運行它。 復制 virtualenv/bin 腳本? 然后他們可能會過時......

我無法在 setuptools 文檔中找到開發工作流程的這一方面。

更新:

setup.py develop之后,我確實在我的 virtualenv 中找到了這個:

$ more virtualenv/lib/python3.6/site-packages/mypackage.egg-link
/home/me/src/mypackage.git
.

正如@Iguananaut 所建議的,我運行了pip install -e. 反而。

現在可以了。

所以我然后做了一個pip uninstall mypackage並做了一個python setup.py develop以重現。 它沒有重現。

我現在明白load_entry_point從字面上讀取了mypackage.egg-info中的entry_points.txt 我唯一的猜測是,不知何故該文件是壞的......並且沒有通過運行python setup.py develop得到修復。

所以——我的問題的答案是:

要在開發環境中運行控制台腳本,請使用pip install -e. 並從virtualenv/bin/中運行腳本。 它被設計為以這種方式工作,如果它不這樣做 - 其他東西是錯誤的。

暫無
暫無

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

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