第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何正確打包可調(diào)用的python腳本或模塊集

如何正確打包可調(diào)用的python腳本或模塊集

慕尼黑5688855 2022-09-20 15:46:14
我已經(jīng)在網(wǎng)上搜索了很長一段時間,但我似乎無法理解如何為我的最終用戶分發(fā)我的python腳本。我一直在使用此命令在命令行上使用腳本python samplemodule.py "args1"這也是我希望我的用戶也通過命令行使用它的方式。但我擔心的是,這些模塊依賴于其他庫或模塊。當我的腳本都位于項目的根目錄中時,它們正在工作,但是當我嘗試將它們打包并將它們放在子目錄中時,一切都會崩潰。這方面的一個例子是,我現(xiàn)在無法運行我的腳本,因為當我從子目錄導(dǎo)入模塊時,腳本出錯。data這是我的項目結(jié)構(gòu)。MyProject    \formatter      __init__.py      __main__.py      formatter.py      addfilename.py      addscrapertype.py     ...\data         __init__.py         helper.py     csv_formatter.py     setup.pycsv_formatter.py文件只是一個用于調(diào)用格式化程序.main 的包裝器。更新:我現(xiàn)在能夠生成一個tar.gz包,但該包在我的計算機上安裝時不可調(diào)用。這是 setup.py:import setuptoolswith open("README.md", "r") as fh:    long_description = fh.read()setuptools.setup(    name="formatter",    version="1.0.1",    author="My Name",    author_email="sample@email.com",    description="A package for cleaning and reformatting csv data",    long_description=long_description,    long_description_content_type="text/markdown",    url="https://github.com/RhaEL012/Python-Scripts",    packages=["formatter"],    include_package_data=True,    package_data={    # If any package contains *.txt or *.rst files, include them:        "": ["*.csv", "*.rst", "*.txt"],    },    entry_points={         "console_scripts": [            "formatter=formatter.formatter:main"        ]    },    classifiers=[        "Programming Language :: Python :: 3",        "License :: OSI Approved :: MIT License",        "Operating System :: OS Independent",    ],    python_requires='>=3.6',    install_requires=[        "pandas"    ])現(xiàn)在,在計算機上安裝軟件包后,我無法調(diào)用該模塊,并導(dǎo)致錯誤:Z:\>addfilename "C:\Users\Username\Desktop\Python Scripts\"更新:我嘗試在虛擬環(huán)境中安裝 setup.py,只是為了查看錯誤來自何處。我安裝它,然后我得到以下錯誤:FileNotFoundError: [Errno 2] no such file or directory: 'README.md'我試圖包括進來,但仍然沒有運氣。所以我試著把它做成一個字符串,只是為了看看安裝是否會繼續(xù)。README.mdMANIFEST.in安裝繼續(xù),但話又說回來,我遇到一個錯誤,說package directory 'formatter' does not exist
查看完整描述

3 回答

?
慕容3067478

TA貢獻1773條經(jīng)驗 獲得超3個贊

由于我無法查看您的特定文件,因此我將僅解釋我通常如何解決此問題。


這就是我通常設(shè)置命令行界面(cli)工具的方式。項目文件夾如下所示:


Projectname

├── modulename

│   ├── __init__.py # this one is empty in this example

│   ├── cli

│   │   ├── __init__.py # this is the __init__.py that I refer to hereafter

│   ├── other_subfolder_with_scripts

├── setup.py

其中所有功能都在模塊名稱文件夾和子文件夾中。在我的我有:__init__.py


def main():

    # perform the things that need to be done 

    # also all imports are within the function call

    print('doing the stuff I should be doing')

但我認為您也可以將您想要的內(nèi)容導(dǎo)入到 中,并且仍然以我在 中的方式引用它。在我們有:__init__.pysetup.pysetup.py


import setuptools


setuptools.setup(

    name='modulename',

    version='0.0.0',

    author='author_name',

    packages=setuptools.find_packages(),

    entry_points={

        'console_scripts': ['do_main_thing=modulename.cli:main'] # so this directly refers to a function available in __init__.py

        },

)

現(xiàn)在安裝軟件包,然后如果它已安裝,您可以調(diào)用:pip install "path to where setup.py is"


do_main_thing

>>> doing the stuff I should be doing

對于我使用的文檔:https://setuptools.readthedocs.io/en/latest/。


我的建議是從這里開始,慢慢添加你想要的功能。然后一步一步地解決你的問題,比如添加 README.md 等。


查看完整回答
反對 回復(fù) 2022-09-20
?
慕田峪7331174

TA貢獻1828條經(jīng)驗 獲得超13個贊

我不同意其他答案。您不應(yīng)在__init__.py中運行腳本,而應(yīng)在__main__.py中運行腳本。


Projectfolder

├── formatter

│   ├── __init__.py

│   ├── cli

│   │   ├── __init__.py # Import your class module here

│   │   ├── __main__.py # Call your class module here, using __name__ == "__main__"

│   │   ├── your_class_module.py

├── setup.py

如果您不想提供自述文件,只需刪除該代碼并手動輸入說明即可。


我使用 https://setuptools.readthedocs.io/en/latest/setuptools.html#find-namespace-packages 而不是手動設(shè)置包。


現(xiàn)在,您可以像以前一樣運行來安裝軟件包。pip install ./


完成運行后:.它運行您在 CLI 文件夾(或您調(diào)用的任何內(nèi)容)中創(chuàng)建的__main__.py文件。python -m formatter.cli arguments


關(guān)于打包模塊的一個重要注意事項是,您需要使用相對導(dǎo)入。例如,您將在其中使用。如果要從相鄰文件夾導(dǎo)入某些內(nèi)容,則需要兩個點。from .your_class_module import YourClassModule__init__.pyfrom ..helpers import HelperClass


查看完整回答
反對 回復(fù) 2022-09-20
?
犯罪嫌疑人X

TA貢獻2080條經(jīng)驗 獲得超4個贊

我不確定這是否有幫助,但通常我使用輪包打包我的python腳本:

pip install wheel
python setup.py sdist bdist_wheel

完成這兩個命令后,將在“dist”文件夾中創(chuàng)建一個whl包,然后您可以將其上傳到PyPi并從那里下載/安裝,也可以使用“pip install ${PackageName}.py”離線安裝它。

這是一個有用的用戶指南,以防萬一有我沒有解釋的其他事情:

https://packaging.python.org/tutorials/packaging-projects/


查看完整回答
反對 回復(fù) 2022-09-20
  • 3 回答
  • 0 關(guān)注
  • 187 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號