日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

什么是setup.py?

發布時間:2024/8/1 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 什么是setup.py? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

誰能解釋一下, setup.py是什么,如何配置或使用它?


#1樓

setup.py是一個python文件,通常告訴您要安裝的模塊/軟件包已與Distutils打包并分發,Distutils是分發Python模塊的標準。

這使您可以輕松安裝Python軟件包。 通常寫就足夠了:

$ pip install .

pip將使用setup.py安裝模塊。 避免直接調用setup.py 。

https://docs.python.org/3/installing/index.html#installing-index


#2樓

如果您下載的軟件包在根文件夾中具有“ setup.py”,則可以通過運行以下命令進行安裝

python setup.py install

如果您正在開發項目,并且想知道此文件的用途,請查看有關編寫安裝腳本的Python文檔。


#3樓

setup.py是Python腳本,通常隨該語言編寫的庫或程序一起提供。 目的是正確安裝軟件。

許多軟件包將distutils框架與setup.py結合使用。

http://docs.python.org/distutils/


#4樓

setup.py是Python對多平臺安裝程序和make文件的回答。

如果您熟悉命令行安裝,則將make && make install轉換為python setup.py build && python setup.py install 。

一些軟件包是純Python,并且僅按字節編譯。 其他可能包含本機代碼,這將需要本機編譯器(如gcc或cl )和Python接口模塊(如swig或pyrex )。


#5樓

setup.py可以在兩種情況下使用:首先,您要安裝Python軟件包。 其次,您要創建自己的Python包。 通常,標準的Python軟件包具有幾個重要文件,例如setup.py,setup.cfg和Manifest.in。 當您創建Python軟件包時,這三個文件將確定(egg-info文件夾下PKG-INFO中的內容)名稱,版本,描述,其他所需的安裝(通常在.txt文件中)以及其他幾個參數。 創建包時setup.py讀取setup.cfg(可以是tar.gz)。 在Manifest.in中,您可以定義應包含在軟件包中的內容。 無論如何,您都可以使用setup.py做很多事情,例如

python setup.py build python setup.py install python setup.py sdist <distname> upload [-r urltorepo] (to upload package to pypi or local repo)

還有許多其他命令可以與setup.py一起使用。 求助

python setup.py --help-commands

#6樓

使用setup.py下載軟件包時,請打開“終端”(Mac,Linux)或“命令提示符”(Windows)。 使用cd并使用Tab鍵幫助您將路徑設置為已下載文件的文件夾以及setup.py :

iMac:~ user $ cd path/pakagefolderwithsetupfile/

按Enter鍵,您應該會看到類似以下內容:

iMac:pakagefolderwithsetupfile user$

然后在此python setup.py install之后鍵入:

iMac:pakagefolderwithsetupfile user$ python setup.py install

按enter 。 做完了!


#7樓

要安裝已下載的Python軟件包,請提取檔案并在其中運行setup.py腳本:

python setup.py install

對我來說,這一直很奇怪。 將軟件包管理器指向下載位置會更自然,例如在Ruby和Nodejs中。 gem install rails-4.1.1.gem

包管理器也更舒適,因為它既熟悉又可靠。 另一方面,每個setup.py都是新穎的,因為它特定于軟件包。 它要求遵守慣例“我相信此setup.py與過去使用的命令相同”。 這是對精神意志力的遺憾。

我并不是說setup.py工作流不如軟件包管理器安全(我知道Pip只是在內部運行setup.py),但是我肯定覺得這很麻煩。 將所有命令都發送到同一個程序包管理器應用程序是一種和諧。 您甚至可能會喜歡它。


#8樓

它有助于在計算機上安裝python軟件包foo (也可以在virtualenv ),以便您可以從其他項目以及[I] Python提示符中導入foo軟件包。

它執行pip , easy_install等類似的工作,


使用setup.py

讓我們從一些定義開始:

軟件包 -包含__init__.py文件的文件夾/目錄。
模塊 -擴展名為.py有效python文件。
分發 -一個軟件包與其他軟件包和模塊的關系 。

假設您要安裝一個名為foo的軟件包。 那你做

$ git clone https://github.com/user/foo $ cd foo $ python setup.py install

相反,如果您不想實際安裝它,但仍然想使用它。 然后做,

$ python setup.py develop

此命令將在站點包內創建到源目錄的符號鏈接,而不是復制內容。 因此,它非常快(特別是對于大包裝)。


創建setup.py

如果您有類似的打包樹,

foo ├── foo │?? ├── data_struct.py │?? ├── __init__.py │?? └── internals.py ├── README ├── requirements.txt └── setup.py

然后,在setup.py腳本中執行以下操作,以便可以將其安裝在某些計算機上:

from setuptools import setupsetup(name='foo',version='1.0',description='A useful module',author='Man Foo',author_email='foomail@foo.com',packages=['foo'], #same as nameinstall_requires=['bar', 'greek'], #external packages as dependencies )

相反,如果您的程序包樹像下面這樣更復雜:

foo ├── foo │?? ├── data_struct.py │?? ├── __init__.py │?? └── internals.py ├── README ├── requirements.txt ├── scripts │?? ├── cool │?? └── skype └── setup.py

然后,您的setup.py在這種情況下將像:

from setuptools import setupsetup(name='foo',version='1.0',description='A useful module',author='Man Foo',author_email='foomail@foo.com',packages=['foo'], #same as nameinstall_requires=['bar', 'greek'], #external packages as dependenciesscripts=['scripts/cool','scripts/skype',] )

向( setup.py )添加更多內容并使其得體:

from setuptools import setupwith open("README", 'r') as f:long_description = f.read()setup(name='foo',version='1.0',description='A useful module',license="MIT",long_description=long_description,author='Man Foo',author_email='foomail@foo.com',url="http://www.foopackage.com/",packages=['foo'], #same as nameinstall_requires=['bar', 'greek'], #external packages as dependenciesscripts=['scripts/cool','scripts/skype',] )

在long_description中, long_description用作軟件包的自述文件描述。


最后,您現在可以將軟件包上傳到PyPi.org,以便其他人可以使用pip install yourpackage來pip install yourpackage 。

第一步是使用以下方法在pypi中聲明您的軟件包名稱和空間:

$ python setup.py register

注冊您的包裹名稱后,任何人都無法聲明或使用它。 成功注冊后,您必須通過以下方式將軟件包上傳到云(到云):

$ python setup.py upload

您也可以選擇通過以下方式使用GPG對包裹進行簽名:

$ python setup.py --sign upload

獎勵 :查看示例setup.py這里離一個真正的項目: torchvision-setup.py


#9樓

為簡單"__main__"當您調用安裝函數并提到其他答案時,setup.py將以"__main__"運行。 在setup.py內部,應該放置安裝軟件包所需的一切。

常用的setup.py功能

以下兩節討論了許多setup.py模塊具有的兩件事。

setuptools.setup

此功能允許您指定項目屬性,例如項目名稱,版本。...最重要的是,如果其他功能打包正確,此功能將允許您安裝其他功能。 請參閱此網頁以獲取setuptools.setup的示例。

使用setuptools.setup的這些屬性可以安裝以下類型的軟件包:

  • 使用setuptools.findpackages導入到項目并在PyPI中列出的軟件包 :

    packages=find_packages(exclude=["docs","tests", ".gitignore", "README.rst","DESCRIPTION.rst"])

  • 軟件包不在PyPI中 ,但可以使用dependency_links從URL下載

    dependency_links=["http://peak.telecommunity.com/snapshots/",]

自定義功能

在理想的情況下, setuptools.setup將為您處理所有事情。 不幸的是,情況并非總是如此。 有時,您需要做一些特定的事情,例如使用subprocess命令安裝依賴項,以使要安裝的系統處于正確的軟件包狀態。 嘗試避免這種情況,這些功能會造成混亂,并且在OS甚至發行版之間通常會有所不同。


#10樓

setup.py是一個與其他文件一樣的Python文件。 它可以采用任何名稱,除非按照慣例將其命名為setup.py以便每個腳本沒有不同的過程。

最常用的setup.py用于安裝Python模塊,但用于服務器其他目的:

模塊:

也許這是setup.py最著名的用法在模塊中。 盡管可以使用pip進行安裝,但默認情況下,舊的Python版本不包含pip ,因此需要單獨安裝。

如果您想安裝模塊但不想安裝pip ,則唯一的選擇是從setup.py文件安裝模塊。 這可以通過python setup.py install來實現。 這會將Python模塊安裝到根字典(不帶pip , easy_install ect)。

當pip失敗時,通常使用此方法。 例如,如果所需軟件包的正確Python版本無法通過pip也許是因為不再維護,則下載源代碼并運行python setup.py install將執行相同的操作,除非需要編譯二進制文件,(但會忽略Python版本-除非返回錯誤)。

setup.py另一個用途是從源代碼安裝軟件包。 如果模塊仍在開發中,則將無法使用wheel文件,并且唯一的安裝方法是直接從源代碼進行安裝。

構建Python擴展:

構建模塊后,可以使用distutils安裝腳本將其轉換為可分發的模塊。 一旦構建完成,就可以使用上面的命令進行安裝。

安裝腳本易于構建,一旦文件已正確配置,就可以通過運行python setup.py build進行編譯(請參閱所有命令的鏈接)。

為了易于使用并按照慣例,它再次被命名為setup.py ,但是可以使用任何名稱。

Cython:

setup.py文件的另一種著名用法包括編譯后的擴展名。 這些需要具有用戶定義值的安裝腳本。 它們允許快速執行(但一旦編譯則依賴平臺)。 這是文檔中的一個簡單示例:

from distutils.core import setup from Cython.Build import cythonizesetup(name = 'Hello world app',ext_modules = cythonize("hello.pyx"), )

這可以通過python setup.py build進行編譯

Cx_Freeze:

需要安裝腳本的另一個模塊是cx_Freeze 。 這會將Python腳本轉換為可執行文件。 這允許包括描述,名稱,圖標,軟件包在內的許多命令包括,排除等,并且一旦運行將產生可分發的應用程序。 文檔中的示例:

import sys from cx_Freeze import setup, Executable build_exe_options = {"packages": ["os"], "excludes": ["tkinter"]} base = None if sys.platform == "win32":base = "Win32GUI"setup( name = "guifoo",version = "0.1",description = "My GUI application!",options = {"build_exe": build_exe_options},executables = [Executable("guifoo.py", base=base)])

可以通過python setup.py build進行編譯。

那么什么是setup.py文件?

很簡單,它是一個在Python環境中構建或配置某些東西的腳本。

分發時,程序包應僅包含一個安裝腳本,但將多個腳本組合成一個安裝腳本并不少見。 注意,這通常涉及distutils但并不總是如此(如我在上一個示例中所示)。 要記住的事情是以某種方式配置Python包/腳本。

它使用名稱,因此在構建或安裝時始終可以使用相同的命令。

總結

以上是生活随笔為你收集整理的什么是setup.py?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。