Pipenv: يتم تجاوز تبعية Git مع فرع منفصل من خلال تبعية الحزمة الأخرى.

تم إنشاؤها على ٨ مايو ٢٠١٨  ·  10تعليقات  ·  مصدر: pypa/pipenv

هذه المشكلة مشابهة للرقم 1779 ، لكن الحل المذكور أنه لا يصلح لي.

أحتاج إلى تثبيت إصدار محدد من حزمة PyInstaller ، لكن PyInstaller هو أيضًا تبعية لـ PyUpdater وهو أمر مطلوب أيضًا في مشروعي ويتخطى PyInstaller إصدار

الناتج $ python -m pipenv.help :

python -m pipenv.help

C:\Program Files (x86)\Python36-32\python.exe: No module named pipenv.help

إنني أدرك أن هذا ليس الشكل الذي يجب أن يبدو عليه هذا الإخراج ، لكن لا يمكنني أن أجعله يعمل. اي مساعدة هنا؟ أنا على الإصدار 11.0.2 من pipenv.


نتيجة متوقعة

أحتاج إلى تثبيت أحدث فرع من PyInstaller develop ولا أريد أن يتجاوز PyUpdater هذا باستخدام الإصدار PyInstaller-3.3.1 . كما هو مقترح في # 1779 ، وضعت PyUpdater أعلى PyInstaller في [packages] في ملف Pipfile.

نتيجة فعلية

بغض النظر عما إذا كان الجزء المهم من Pipfile يبدو كالتالي:

PyUpdater = "*"
PyInstaller = {git = "https://github.com/pyinstaller/pyinstaller", ref = "develop"}

او مثل هذا:

PyInstaller = {git = "https://github.com/pyinstaller/pyinstaller", ref = "develop"}
PyUpdater = "*"

سيكون إصدار PyInstaller في Pipfile.lock هو 3.3.1 وينتهي بي الأمر بتثبيت هذا الإصدار.

الشيء المثير للاهتمام هو أنه إذا قمت بإلغاء تثبيت PyInstaller بـ pipenv uninstall pyinstaller ثم قمت بتثبيته مرة أخرى بـ pipenv install https://github.com/pyinstaller/pyinstaller/archive/develop.zip أحصل على Successfully installed PyInstaller-3.4.dev0+b31794cf1 ولكن في الواقع تم تثبيت الإصدار 3.3.1 في حين أن.

خطوات التكرار
# Pipfile
[[source]]

url = "https://pypi.python.org/simple"
verify_ssl = true
name = "pypi"

[packages]
PyUpdater = "*"
PyInstaller = {git = "https://github.com/pyinstaller/pyinstaller", ref = "develop"}

pipenv install
نسخة التحقق: pipenv run pyinstaller --version

أو

خلق بيئة نظيفة جديدة
pipenv install pyupdater
pipenv uninstall pyinstaller
pipenv install https://github.com/pyinstaller/pyinstaller/archive/develop.zip
نسخة التحقق: pipenv run pyinstaller --version

Dependency Resolution Type

ال 10 كومينتر

تم التأكيد ، القرار خاطئ هنا.

حسنًا ، فالطلب مهم فقط عند قفل أو استخدام --sequential ، ولن يتم حل ملفات zip بشكل صحيح أبدًا على ما أعتقد ... يمكنك تجربة استخدام -e لكنني لست متأكدًا من أن هذا يعمل. التثبيت متزامن لذا فإن طلب ملف الأنابيب لن يفعل الكثير.

يجب أن تفوز التبعية ذات المستوى الأعلى دائمًا بالمنظمة البحرية الدولية. تم تحديد PyInstaller في ملف Pipfile (أي المستوى الأعلى) ، لذلك لا ينبغي تجاوز معلومات الإصدار الخاصة به من خلال مواصفات تبعية PyUpdater. قد يكون من المعقول إثارة استثناء إذا لم يتم حله بشكل معقول ، ولكن لم يتم تجاوزه بصمت.

ماذا تفعل على الماجستير

يحل PyInstaller إلى الإصدار الموجود على PyPI ، كما هو مطلوب بواسطة PyUpdater. هذا ما حصلت عليه على Windows:

{
    "_meta": {
        "hash": {
            "sha256": "c0d9cbadaa9e85bb1b87408b1e0b428414754623d472d64deb2a5bd69ff9bf2c"
        },
        "pipfile-spec": 6,
        "requires": {},
        "sources": [
            {
                "name": "pypi",
                "url": "https://pypi.org/simple",
                "verify_ssl": true
            }
        ]
    },
    "default": {
        "altgraph": {
            "hashes": [
                "sha256:49dc134049903cc73fb76ca3cc9bef5b2b8c01c28732dd29594f99af2b449fc5",
                "sha256:fc28b986a68fde8d3ff0e6d6ba3fbdd2cd562d11d45ef7c7735fbd826c9eec2e"
            ],
            "version": "==0.15"
        },
        "appdirs": {
            "hashes": [
                "sha256:9e5896d1372858f8dd3344faf4e5014d21849c756c8d5701f78f8a103b372d92",
                "sha256:d8b24664561d0d34ddfaec54636d502d7cea6e29c3eaf68f3df6180863e2166e"
            ],
            "version": "==1.4.3"
        },
        "bsdiff4": {
            "hashes": [
                "sha256:5a022ff4c1d1de87232b1c70bde50afbb98212fd246be4a867d8737173cf1f8f"
            ],
            "version": "==1.1.4"
        },
        "certifi": {
            "hashes": [
                "sha256:13e698f54293db9f89122b0581843a782ad0934a4fe0172d2a980ba77fc61bb7",
                "sha256:9fa520c1bacfb634fa7af20a76bcbd3d5fb390481724c597da32c719a7dca4b0"
            ],
            "version": "==2018.4.16"
        },
        "chardet": {
            "hashes": [
                "sha256:84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae",
                "sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691"
            ],
            "version": "==3.0.4"
        },
        "dsdev-utils": {
            "hashes": [
                "sha256:cbe18eb0104b56e19087d60b765d7875b114acce01b1aceca9120f0556ab109d"
            ],
            "version": "==0.9.6"
        },
        "ed25519": {
            "hashes": [
                "sha256:2991b94e1883d1313c956a1e3ced27b8a2fdae23ac40c0d9d0b103d5a70d1d2a"
            ],
            "version": "==1.4"
        },
        "future": {
            "hashes": [
                "sha256:e39ced1ab767b5936646cedba8bcce582398233d6a627067d4c6a454c90cfedb"
            ],
            "version": "==0.16.0"
        },
        "macholib": {
            "hashes": [
                "sha256:7f76a7ef4f58f85889dec25fb532bad5acfd461c444738dfeb2e7bf855d5906b",
                "sha256:9aeec52d7da59912b15445d08b08d95cee48414f01dd035be06f04a825973c08"
            ],
            "version": "==1.9"
        },
        "pbr": {
            "hashes": [
                "sha256:3747c6f017f2dc099986c325239661948f9f5176f6880d9fdef164cb664cd665",
                "sha256:a9c27eb8f0e24e786e544b2dbaedb729c9d8546342b5a6818d8eda098ad4340d"
            ],
            "version": "==4.0.4"
        },
        "pefile": {
            "hashes": [
                "sha256:675c35ee0e1677db9e80d2f48d8a7ff2cf38e6207e8cd5e2a2c6d126db025854"
            ],
            "version": "==2017.11.5"
        },
        "pyinstaller": {
            "hashes": [
                "sha256:715f81f24b1ef0e5fe3b3c71e7540551838e46e9de30882aa7c0a521147fd1ce"
            ],
            "version": "==3.3.1"
        },
        "pypiwin32": {
            "hashes": [
                "sha256:67adf399debc1d5d14dffc1ab5acacb800da569754fafdc576b2a039485aa775",
                "sha256:71be40c1fbd28594214ecaecb58e7aa8b708eabfa0125c8a109ebd51edbd776a"
            ],
            "version": "==223"
        },
        "pyupdater": {
            "hashes": [
                "sha256:61e796063131bcde4e2467580c0add3a2e77cd0b0533a1b559f066e4c127570e"
            ],
            "index": "pypi",
            "version": "==2.5.3"
        },
        "pywin32": {
            "hashes": [
                "sha256:0df9b008caef10af0d674c483316c28dcf78391332d9d5d380fab667ebf2d7d1",
                "sha256:249391eb924b8376826e6f84d143d1dcc0e400b238b511d5fbd3811f6ed9ad50",
                "sha256:42f48567e36b787901ff3da20de5a134cd9880cc90832e2aad60951f058699f0",
                "sha256:9eff897796c9d76a213134257a01b6f8a122c55e0772847fba313a8091f3ec44",
                "sha256:c7ea0deabcc324e5b74084b5452003109c592d1aedbe9e9289ed55b26d9b0c7f",
                "sha256:da422d4067d98b49fbb19d851900a5fc38c61eab0ee803574c27c42309173ebe",
                "sha256:f0f0e7c82ee334dd6e888b9b5beb05fd8947355fa7a15644c810bb4ea0079ca6",
                "sha256:fb3c85907918fd01a72ee146d323d220771dee151c0cfa5630c2f35797ffb116"
            ],
            "version": "==223"
        },
        "six": {
            "hashes": [
                "sha256:70e8a77beed4562e7f14fe23a786b54f6296e34344c23bc42f07b15018ff98e9",
                "sha256:832dc0e10feb1aa2c68dcc57dbb658f1c7e65b9b61af69048abc87a2db00a0eb"
            ],
            "version": "==1.11.0"
        },
        "stevedore": {
            "hashes": [
                "sha256:e3d96b2c4e882ec0c1ff95eaebf7b575a779fd0ccb4c741b9832bed410d58b3d",
                "sha256:f1c7518e7b160336040fee272174f1f7b29a46febb3632502a8f2055f973d60b"
            ],
            "version": "==1.28.0"
        },
        "urllib3": {
            "hashes": [
                "sha256:06330f386d6e4b195fbfc736b297f58c5a892e4440e54d294d7004e3a9bbea1b",
                "sha256:cc44da8e1145637334317feebd728bd869a35285b93cbb4cca2577da7e62db4f"
            ],
            "version": "==1.22"
        }
    },
    "develop": {}
}

uranusjr جربه مقابل الفرع مع دليل المتطلبات المحدث

نفس الشيء مع bugfix / 2260: / ( pipenv lock --clear )

أنا فقط ألاحظ أن هذا لم يتم تثبيته في الوضع القابل للتحرير - نحن لا ندعم دقة التبعية للأشياء التي ليست في الوضع القابل للتحرير لأننا لا نملك رؤية في الرسم البياني للتبعية

آه ، أعتقد أنني أعرف لماذا يحدث هذا!

أهلا. لقد ذكرت هذا في Slack أمس. أعتقد أن هذا هو الخطأ الذي واجهته.

تبدو حزم Pipfile كما يلي:

[packages]
foo = "*"
bar = {git = "https://github.com/bar/bar", ref = "bar"}

في البداية ، كان كل شيء مغلقًا كما هو متوقع مع حزم bar القادمة من github. بعد تشغيل pipenv update bar تم تحديثه وإضافة foo كتبعية. بعد ذلك ، عند الإغلاق ، تم حل الإصدار foo إلى إصدار PyPI.

يبدو أن إضافة editable= True قد حلت المشكلة

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

ipmb picture ipmb  ·  3تعليقات

hynek picture hynek  ·  3تعليقات

xi picture xi  ·  3تعليقات

fbender picture fbender  ·  3تعليقات

jacebrowning picture jacebrowning  ·  3تعليقات