1
我已經寫了從文件中解析數據,然後使用硒輸入數據到網站上的小Python代碼,我試圖用一個腳本來捆綁它。導入在Python包比普通的腳本
我已經可以把它打包成PIP包並上傳,但試圖運行它時,我得到了ImportError: No module named '<name>'
在同一目錄模塊。
我的結構非常簡單
chessil_tourney_inserter/
setup.py
chessil_tourney_inserter/
__init__.py (empty)
chessil_tourney_inserter.py
swiss98_text_parser.py
command_line.py
而且setup.py也相當簡單:
from setuptools import setup
setup(name='chessil_tourney_inserter',
.
.
.
packages=['chessil_tourney_inserter'],
zip_safe=False,
install_requires = [
'selenium'
],
entry_points={
'console_scripts': [
'insertchessiltourney = chessil_tourney_inserter.command_line:main']
})
截至目前command_line.main
簡單地調用chessil_tourney_inserter
:
import chessil_tourney_inserter.chessil_tourney_inserter as cti
import sys
def main():
if len(sys.argv) == 1:
print("Usage: chessil_tourney_inserter.py *tournament name*")
exit()
cti.main();
if __name__ == "__main__":
main()
和chessil_tourney_inserter給我一個進口錯誤:
import swiss98_text_parser
,但如果我嘗試直接運行chessil_tourney_inserter.py
它的工作原理,如果我添加了包名的進口將突破chessil_tourney_inserter.py
所以我怎麼設置的文件,使進口量將當我直接運行文件時,以及當我嘗試將它作爲包導入或將其作爲腳本運行時,都能正常工作?
這麼簡單,完美的作品。謝謝!我閱讀了__init__.py,但沒有意識到它應該在目錄之外......在我的搜索中,我發現了一些從python 3開始的地方,如果包名稱匹配它將在內部搜索的目錄,即使沒有__init__。 py文件,這是代碼與包名稱一起工作的原因,即使沒有它? – Nescio
是的,我認爲是。 [Pep 420](https://docs.python.org/3/whatsnew/3.3.html#pep-420-implicit-namespace-packages)引入了此更改。你正在使用哪個版本的Python? – Pramod
我目前使用的是版本3.4.2 – Nescio