[英]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.