لست متأكدًا مما إذا كان هذا ممكنًا ، لكنني أتساءل عما إذا كان من الممكن تحميل ملفات *.py
مع الجزء volumes
من fig.yml
سبيل المثال.
أحاول تحميل دليل به حزمة بايثون. يبدو ملف Dockefile الخاص بي كما يلي:
FROM python:3
ADD . /code/
WORKDIR /code
RUN pip install -r requirements-testing.txt -e .
ENV LC_ALL C.UTF-8
ENV LANG C.UTF-8
المشكلة هي أنه عندما يكون لدي fig.yml
مثل هذا:
python:
build: .
volumes:
- .:/code/
ثم قم بتشغيل محاولة تشغيل CLI المثبت مع تطبيق Python الخاص بي ، فهو لا يعمل ، لأن pip install -e .
ينشئ بعض الأدلة مع حزمة python المدمجة تحت /code/
. ثم عندما أقوم بتثبيت دليل رمز المصدر المحلي الخاص بي فوق هذا الدليل ، فإنه يزيل دليل الإنشاء ويفشل الأمر.
$ fig run python dc-campaign-finance-scraper
Traceback (most recent call last):
File "/usr/local/bin/dc-campaign-finance-scraper", line 5, in <module>
from pkg_resources import load_entry_point
File "/usr/local/lib/python3.4/site-packages/pkg_resources.py", line 2697, in <module>
working_set.require(__requires__)
File "/usr/local/lib/python3.4/site-packages/pkg_resources.py", line 669, in require
needed = self.resolve(parse_requirements(requirements))
File "/usr/local/lib/python3.4/site-packages/pkg_resources.py", line 572, in resolve
raise DistributionNotFound(req)
pkg_resources.DistributionNotFound: dc-campaign-finance-scraper==0.5.1
لذلك إذا كان بإمكاني فقط تحميل ملفات .py
، فلن يتم استبدال كل تلك الأشياء الأخرى. لست متأكدًا مما إذا كان هذا ممكنًا عن بُعد ، وإذا لم يكن كذلك ، فهل لديك أي نصائح باستخدام التين لتطوير حزمة Python /
هذا غير ممكن مع مجلدات Docker ، أخشى.
هل من الممكن الحصول على pip install
لوضع الملفات في دليل مختلف ، خارج /code
، وتهيئة Python للبحث هناك؟ بإلقاء نظرة سريعة على مستندات Pip ، يبدو أن --root
أو --target
قد يفي بالغرض.
أفضل حل وجدته هو فقط تحميل الكود الفعلي وأدلة الاختبارات ، وترك الملفات الأخرى دون تغيير.
بهذه الطريقة سيتم تحديث ملفات المصدر دون إعادة البناء ، لكنها لن تستبدل الملفات المترجمة.
python:
build: .
volumes:
- dc_campaign_finance_scraper:/code/dc_campaign_finance_scraper
- test:/code/test
كان هذا يقودني للجنون لساعات ، شكرًا لك saulshanabrook
التعليق الأكثر فائدة
أفضل حل وجدته هو فقط تحميل الكود الفعلي وأدلة الاختبارات ، وترك الملفات الأخرى دون تغيير.
بهذه الطريقة سيتم تحديث ملفات المصدر دون إعادة البناء ، لكنها لن تستبدل الملفات المترجمة.