python setup.py install
Bir PyPI paketini çalıştırırken bu uyarı ile karşılaşan var mı ?
install_requires
paketin ne gerektirdiğini tanımlar. Pek çok PyPI paketi bu seçeneğe sahiptir. Nasıl "bilinmeyen bir dağıtım seçeneği" olabilir?
python setup.py install
Bir PyPI paketini çalıştırırken bu uyarı ile karşılaşan var mı ?
install_requires
paketin ne gerektirdiğini tanımlar. Pek çok PyPI paketi bu seçeneğe sahiptir. Nasıl "bilinmeyen bir dağıtım seçeneği" olabilir?
Yanıtlar:
python setup.py
install_requires'i desteklemeyen distutils kullanır. setuptools yapar, ayrıca dağıtır (halefi) ve pip (ikisini de kullanır) yapar. Ama aslında onları kullanmak zorundasın. Yani kurulum araçlarını easy_install
veya pip install
.
Başka bir yol da setup.py'nizdeki kurulum araçlarından kurulumu içe aktarmaktır, ancak bu standart değildir ve paketinizi kullanmak isteyen herkesin kurulum araçlarının yüklü olmasını gerektirir.
pip
, o zaman setup.py
yalnızca yerinde bir uzantı oluşturmak istiyorsam dosyayı nasıl çalıştırırım ?
python setup.py sdist
yükleyebilirsiniz pip install resulting_package.tar.gz
. pip install -e
Doğrudan kaynaktan yüklemek için de kullanabilirsiniz , ancak her zaman doğrudan paketten veya depodan yüklemeyi tercih ettim ..
pip install pendulum==1.4.4
. Çalıştırmak pip install setuptools --upgrade
hatayı temizledi.
Bu, google aramamdaki ilk sonuçtu, ancak cevabı yoktu. Kurulum araçlarını yükseltmenin sorunu benim için çözdüğünü öğrendim (ve iyi önlem için pip)
pip install --upgrade pip
pip install --upgrade setuptools
Umarım bu, sonraki kişinin bu bağlantıyı bulmasına yardımcı olur!
pip3 install neovim-remote
.)
DİKKAT ! DİKKAT ! İleride kusurlu cevap. Python evrenindeki ambalaj durumuyla ilgili "en son notu" almak için, oldukça ayrıntılı bu makaleyi okuyun .
Ansible oluşturmaya / kurmaya çalışırken bu problemle karşılaştım. Sorun şu ki, dağıtımlar gerçekten install_requires'i desteklemiyor . Setuptools , dağıtımları anında maymunla yaması yapmalıdır, ancak bunu yapmaz, çünkü kurulum araçlarının son sürümü 2009'dan 0.6c11 iken distutils bir çekirdek Python projesidir.
Bu nedenle, setuptools-0.6c11-py2.7.egg'i manuel olarak kurduktan sonra bile, setup.py yalnızca distutils'i alır, site paketleri / setuptools / 'dan değil.
Ayrıca, setuptools dokümantasyonu ez_setup kullanmak için ipucu verir, distutils'i değil.
Ancak, bugünlerde setuptools'un kendisi dağıtım tarafından sağlanmaktadır ve bu setup () çeşidi, install_requires'ı destekler.
setuptools
ve distribute
projeleri yeniden birleşme sürecinde, ancak birleşme henüz tamamlanmadı (Bu makaleyi en kısa sürede güncelleyeceğim. bu değişir). " 2019 yılına kadar durumunun ne olduğunu bilen var mı? Python 2.7'nin Kullanım Ömrü Sonu tarihinin hızla yaklaşmasıyla birlikte, birçok python paketi güncelleme ve yeniden paketleme sürecinde olacak.
Python 2.7.11 ile bir Mac kullanıyorum. Son derece basit ve anlaşılır projeler yaratmaya çalışıyordum, burada tek ihtiyacım çalıştırabilmem python setup.py install
ve setup.py
ideal olarak dağıtımlardan kurulum komutunu kullanabilmem. Kelimenin tam anlamıyla, setup()
burada not ettiğimden başka kwarglardan başka bir ithalat veya kod yok.
Dosyam için içe aktarma işlemleri setup.py
şu olduğunda hatayı alıyorum :
from distutils.core import setup
Bunu kullandığımda aşağıdaki gibi uyarılar alıyorum
/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py:267: UserWarning: Bilinmeyen dağıtım seçeneği: 'entry_points' warnings.warn ( msj)
İçe aktarımı (ve başka hiçbir şeyi ) şu şekilde değiştirirsem:
from distutils.core import setup
import setuptools # noqa
Uyarılar kaybolur.
Kullanmadığımı setuptools
, sadece içeri aktarmanın davranışı artık uyarı vermeyecek şekilde değiştirdiğini unutmayın. Benim için, kullandığım bazı projelerin bu uyarıları verdiği ve bazılarının vermediği gerçekten şaşırtıcı bir farkın nedeni bu.
Açıktır ki, bir çeşit maymun yamalama devam ediyor ve bu ithalatın yapılıp yapılmamasından etkileniyor. Muhtemelen bu sorunu araştıran herkes için durum bu değildir, ancak çalıştığım dar ortam için aradığım cevap budur.
Bu, diğer (topluluk) yorumuyla tutarlıdır; bu, dağıtımcıların kurulum araçlarını kullanması gerektiğini ve Ansible'ı yüklerken sorun yaşadıklarını belirtir. Ansible, geçmişte kurulum araçlarına sahip olmadan kurulumlara izin vermeye çalışmış ve daha sonra buna geri dönmüş gibi görünüyor.
https://github.com/ansible/ansible/blob/devel/setup.py
Havada pek çok şey var ... ancak basit bir proje için basit bir cevap arıyorsanız, muhtemelen kurulum araçlarını içe aktarmalısınız.
import setuptools
de mucizevi bir şekilde sorunu benim için ubuntu 16.04'te python 3.5 ile çözdü.
Bu, dağıtımlardan gelen bir uyarıdır ve kurulum araçlarının kurulu olmadığının bir işaretidir. Http://pypi.python.org/pypi/setuptools adresinden yüklemek uyarıyı kaldıracaktır.
sudo apt-get install python-dev # for python2.x installs
sudo apt-get install python3-dev # for python3.x installs
Eksik başlıkları yükleyecektir. Sorunumu çözdü
Sonuç olarak :
distutils
desteklemiyorsa install_requires
veya entry_points
, setuptools
yok.
değişim from distutils.core import setup
içinde setup.py dosyası için from setuptools import setup
sizin veya refactor setup.py dosyası sadece kullanmak distutils
sahiptir.
Buraya geldim çünkü entry_points
sadece bir setuptools
özellik olduğunu fark etmemiştim .
Burada dönüştürmek isteyen varsa setuptools
için distutils
benim gibi:
install_requires
gelen setup.py dosyası ve sadece kullanmak requirements.txt ilepip
entry_points
için scripts
( doc ) ve güvenerek herhangi modüller planı ayrı entry_points
shebangs ve bir giriş noktası ile tam komut olmak.Anlayabildiğim kadarıyla bu, standart kitaplıkta temel sınıfa çağırmadan önce kurulum araçlarına özgü seçenekleri kaldırmadığı kurulum araçlarında bir hatadır: https://bitbucket.org/pypa/setuptools/issue/29 / önlemek-userwarnings-yaydığı-çağrılırken
Eğer koşulsuz varsa import setuptools
sizin de setup.py
(aynı yapmanız gerekir Setuptools'u özel seçenekler kullanılıyorsa), sonra komut ile başarısız değil gerçeği ImportError
Setuptools düzgün yüklü olduğunu gösterir.
Uyarıyı aşağıdaki şekilde susturabilirsiniz:
python -W ignore::UserWarning:distutils.dist setup.py <any-other-args>
Bunu yalnızca , kurulum araçları yüklü değilse tamamen başarısız olacak koşulsuz içe aktarmayı kullanırsanız yapın :)
(Bu aynı davranışı birleşme sonrası kurulum araçları deposundan bir ödeme sırasında görüyorum, bu yüzden bunun bir sistem yapılandırma sorunu yerine bir kurulum araçları hatası olduğundan eminim. Ön birleştirme dağıtımının aynı sorunu yaşayacağını umuyorum)
Bunu şimdi Python2.7 kullanan eski araçlarda gördüm, burada bir yapının (Dockerfile gibi) sabitlenmemiş bir bağımlılık yüklediği, örneğin pytest. PyTest, Python 2.7 desteğini bıraktı, bu nedenle yeni paket sürümünün <sürümünü belirtmeniz gerekebilir.
Ya da mermiyi ısırıp, uygulanabilirse bu uygulamayı Python 3'e dönüştürün.