Pipenv installは、Pipfileからすべてをインストールするわけではありません
私はこれをUbuntu20.04の新規インストールで実行しています。
pipenv install
Pipfileを使用:
$ cat Pipfile
[packages]
Django = "*"
django-split-settings = "*"
python-dotenv = "*"
django-compressor = "*"
django-libsass = "*"
Brotli = "*"
django-htmlmin = "*"
gunicorn = "*"
dj-database-url = "*"
wagtail = "*"
wagtail-metadata = "*"
wagtail-blocks = "*"
psycopg2 = "*"
django-tz-detect = "*"
wagtailcodeblock = "*"
django-taggit = "*"
django-taggit-templatetags2 = "*"
django-fontawesome-5 = "*"
django-debug-toolbar = "*"
wagtail-robots = "*"
wand = "*"
[dev-packages]
pylint = "*"
django-debug-toolbar = "*"
[requires]
python_version = "3.7"
[packages.whitenoise]
extras = [ "brotli",]
[packages.django-storages]
extras = [ "dropbox",]
次に実行します:
$ pipenv run pip list
Package Version
--------------- -------
django-storages 1.9.1
pip 20.2.2
setuptools 49.6.0
wheel 0.35.1
whitenoise 5.2.0
何らかの理由でホワイトノイズとdjango-storagesのみをインストールしますが、どうすればこれを修正できますか?
追加情報:
$ which python /home/maks/.local/share/virtualenvs/personal-website-lhNGB4ub/bin/python $ which pip
/home/maks/.local/share/virtualenvs/personal-website-lhNGB4ub/bin/pip
$ pyenv which python
/home/maks/.pyenv/versions/3.7.8/bin/python
この問題は、Windowsでしばらく開発した後、最近発生しました。発生したときに、代わりにrequirements.txtファイルを使用するように切り替えましたが、今度はpipenvの使用に戻りたいと思います。
私が知る限り、ファイルのエンコードや行末に問題はなく、いつ/なぜこれが正確に発生し始めたのかはわかりません。
編集:実行pipenv install django
するとdjangoが正しくインストールされますが、pipfileとpipfile.lockは同じままです。つまり、これはPipfileの問題ではありません。
回答
修正:pipfileを削除し、各パッケージを手動で再インストールすることで機能しましたpipenv install
。これにより、外観がわずかに異なるpipfileが発生しました。この問題の原因は、pipenv自体の更新でした。 :
古いPipfile:
[[source]]
url = "https://pypi.python.org/simple"
verify_ssl = true
name = "pypi"
[requires]
python_version = "3.7"
[packages]
Django = "*"
django-split-settings = "*"
python-dotenv = "*"
django-compressor = "*"
django-libsass = "*"
Brotli = "*"
django-htmlmin = "*"
dj-database-url = "*"
wagtail = "*"
wagtail-metadata = "*"
wagtail-blocks = "*"
psycopg2 = "*"
django-tz-detect = "*"
wagtailcodeblock = "*"
django-taggit = "*"
django-taggit-templatetags2 = "*"
django-fontawesome-5 = "*"
django-debug-toolbar = "*"
wagtail-robots = "*"
wand = "*"
gunicorn = "*"
[dev-packages]
pylint = "*"
django-debug-toolbar = "*"
[packages.whitenoise]
extras = [ "brotli",]
[packages.django-storages]
extras = [ "dropbox",]
新しい環境に各パッケージを手動で再インストールした後:
[[source]]
name = "pypi"
url = "https://pypi.org/simple"
verify_ssl = true
[dev-packages]
pylint = "*"
django-debug-toolbar = "*"
[packages]
django = "*"
django-split-settings = "*"
python-dotenv = "*"
django-compressor = "*"
django-libsass = "*"
brotli = "*"
django-htmlmin = "*"
dj-database-url = "*"
wagtail = "*"
wagtail-metadata = "*"
wagtail-blocks = "*"
django-tz-detect = "*"
wagtailcodeblock = "*"
django-taggit = "*"
django-taggit-templatetags2 = "*"
django-fontawesome-5 = "*"
django-debug-toolbar = "*"
wagtail-robots = "*"
wand = "*"
whitenoise = {extras = ["brotli"], version = "*"}
django-storages = {extras = ["dropbox"], version = "*"}
gunicorn = "*"
[requires]
python_version = "3.7"
このpipfileからのインストールは正常に機能しpipenv install
、すべてのパッケージがインストールされました。
なぜこれがすべて起こったのか正確にはわかりません。おそらくそれはpipenvのバグであるか、下位互換性がないのかもしれません。誰かが知っているなら私に知らせてください。
すべてのパッケージを再インストールせずにこれを修正したい場合は、次のようなビットを置き換えるだけです。
[packages.whitenoise]
extras = [ "brotli",]
そしてそれらをこのフォーマットに変換します:
whitenoise = {extras = ["brotli"], version = "*"}
その実行を実行した後pipenv install
、すべての依存関係が正しくインストールされます
Pipenvリポジトリに問題を提出しました: https://github.com/pypa/pipenv/issues/4433
setuptools
、pip
およびwheel
はpythonパッケージの一部であり、プリインストールされています。それらを最新バージョンに更新しておいてください。
ここで私が見る唯一のパターンは、ホワイトノイズとdjango-storagesがトップ[パッケージ]の一部ではないということです。たぶん、問題の原因に近づくために、gunicornなどのパッケージを一番下まで通過させて、次のようにします。
`[packages.gunicorn]
extras = [ "",]`
また、PythonPATHはWindowsで少し奇妙に動作します。切り替えたときに、問題がないことを確認してください。パッケージがenvになく、そこに表示されている場合は、ネイティブPythonインストールを確認してください:)