Pipenv هي أداة لإدارة Python virtualenv تدعم عددًا كبيرًا من الأنظمة وتسد الفجوات بشكل جيد بين pip وpython (باستخدام System python أو pyenv أو asdf) وvirtualenv. Linux وmacOS وWindows جميعهم مواطنون من الدرجة الأولى في Pipenv.
يقوم Pipenv تلقائيًا بإنشاء Virtualenv لمشاريعك وإدارتها، بالإضافة إلى إضافة/إزالة الحزم من Pipfile
الخاص بك أثناء تثبيت/إلغاء تثبيت الحزم. كما يقوم أيضًا بإنشاء مشروع Pipfile.lock
، والذي يُستخدم لإنتاج تصميمات حتمية.
يهدف Pipenv في المقام الأول إلى تزويد المستخدمين ومطوري التطبيقات بطريقة سهلة للوصول إلى بيئة مشروع عمل متسقة.
المشاكل التي يسعى Pipenv إلى حلها متعددة الأوجه:
pip
و virtualenv
بشكل منفصل: فهما يعملان معًا.requirements.txt
الذي يحتوي على تجزئات الحزمة أمرًا صعبًا. يستخدم Pipenv Pipfile
و Pipfile.lock
لفصل إعلانات التبعية المجردة عن آخر مجموعة تم اختبارها.$ pipenv graph
)..env
. بيبينف
تثبيت
سمات
المفاهيم الأساسية
أوامر أخرى
استكمال شل
الاستخدام
أمثلة الاستخدام
الأوامر
تحديد موقع المشروع
حدد موقع Virtualenv
حدد موقع مترجم بايثون
تثبيت الحزم
التثبيت من بوابة
تثبيت تبعية التطوير
إظهار الرسم البياني للتبعية
إنشاء ملف قفل
تثبيت جميع تبعيات التطوير
إلغاء تثبيت كل شيء
استخدم القشرة
التوثيق
يمكن تثبيت Pipenv مع Python 3.7 وما فوق.
بالنسبة لمعظم المستخدمين، نوصي بتثبيت Pipenv باستخدام pip
:
pip install --user pipenv
أو إذا كنت تستخدم FreeBSD:
pkg install py39-pipenv
أو إذا كنت تستخدم Gentoo:
sudo emerge pipenv
أو إذا كنت تستخدم Void Linux:
sudo xbps-install -S python3-pipenv
وبدلاً من ذلك، يفضل بعض المستخدمين استخدام Pipx:
pipx install pipenv
أو يفضل بعض المستخدمين استخدام وحدة Python pip
python -m pip install pipenv
راجع الوثائق للحصول على أحدث التعليمات.
؟
pyenv
أو asdf
متاحًا.Pipfile
.Pipfile
تلقائيًا، في حالة عدم وجوده.Pipfile
عند تثبيتها/إلغاء تثبيتها..env
، إذا كانت موجودة.للحصول على مرجع الأوامر، راجع الأوامر.
install
، سيتم تثبيت جميع الحزم [packages]
المحددة. لتمكين الإكمال في الأسماك، أضف هذا إلى التكوين الخاص بك ~/.config/fish/completions/pipenv.fish
:
eval (env _PIPENV_COMPLETE=fish_source pipenv)
يوجد أيضًا مكون إضافي للأسماك، والذي سيقوم تلقائيًا بتنشيط الأغلفة الفرعية الخاصة بك نيابةً عنك!
بدلاً من ذلك، باستخدام zsh، أضف هذا إلى التكوين الخاص بك ~/.zshrc
:
eval "$(_PIPENV_COMPLETE=zsh_source pipenv)"
بدلاً من ذلك، باستخدام bash، أضف هذا إلى التكوين الخاص بك ~/.bashrc
أو ~/.bash_profile
:
eval "$(_PIPENV_COMPLETE=bash_source pipenv)"
تم الآن تمكين عمليات إكمال الصدفة السحرية!
$ pipenv --help
Usage: pipenv [OPTIONS] COMMAND [ARGS]...
Options:
--where Output project home information.
--venv Output virtualenv information.
--py Output Python interpreter information.
--envs Output Environment Variable options.
--rm Remove the virtualenv.
--bare Minimal output.
--man Display manpage.
--support Output diagnostic information for use in
GitHub issues.
--site-packages / --no-site-packages
Enable site-packages for the virtualenv.
[env var: PIPENV_SITE_PACKAGES]
--python TEXT Specify which version of Python virtualenv
should use.
--clear Clears caches (pipenv, pip). [env var:
PIPENV_CLEAR]
-q, --quiet Quiet mode.
-v, --verbose Verbose mode.
--pypi-mirror TEXT Specify a PyPI mirror.
--version Show the version and exit.
-h, --help Show this message and exit.
Create a new project using Python 3.7, specifically:
$ pipenv --python 3.7
Remove project virtualenv (inferred from current directory):
$ pipenv --rm
Install all dependencies for a project (including dev):
$ pipenv install --dev
Create a lockfile containing pre-releases:
$ pipenv lock --pre
Show a graph of your installed dependencies:
$ pipenv graph
Check your installed dependencies for security vulnerabilities:
$ pipenv check
Install a local setup.py into your virtual environment/Pipfile:
$ pipenv install -e .
Use a lower-level pip command:
$ pipenv run pip freeze
check Checks for PyUp Safety security vulnerabilities and against
PEP 508 markers provided in Pipfile.
clean Uninstalls all packages not specified in Pipfile.lock.
graph Displays currently-installed dependency graph information.
install Installs provided packages and adds them to Pipfile, or (if no
packages are given), installs all packages from Pipfile.
lock Generates Pipfile.lock.
open View a given module in your editor.
requirements Generate a requirements.txt from Pipfile.lock.
run Spawns a command installed into the virtualenv.
scripts Lists scripts in current environment config.
shell Spawns a shell within the virtualenv.
sync Installs all packages specified in Pipfile.lock.
uninstall Uninstalls a provided package and removes it from Pipfile.
update Runs lock, then sync.
upgrade Update the lock of the specified dependency / sub-dependency,
but does not actually install the packages.
verify Verify the hash in Pipfile.lock is up-to-date.
$ pipenv --where
/Users/kennethreitz/Library/Mobile Documents/com~apple~CloudDocs/repos/kr/pipenv/test
$ pipenv --venv
/Users/kennethreitz/.local/share/virtualenvs/test-Skyy4vre
$ pipenv --py
/Users/kennethreitz/.local/share/virtualenvs/test-Skyy4vre/bin/python
$ pipenv install
Creating a virtualenv for this project...
...
No package provided, installing all dependencies.
Virtualenv location: /Users/kennethreitz/.local/share/virtualenvs/test-EJkjoYts
Installing dependencies from Pipfile.lock...
...
To activate this project's virtualenv, run the following:
$ pipenv shell
يمكنك تثبيت الحزم باستخدام Pipenv من git وأنظمة التحكم في الإصدار الأخرى باستخدام عناوين URL المنسقة وفقًا للقاعدة التالية:
<vcs_type>+<scheme>://<location>/<user_or_organization>/<repository>@<branch_or_tag>#<package_name>
القسم الاختياري الوحيد هو القسم @<branch_or_tag>
. عند استخدام git عبر SSH، يمكنك استخدام الاختصار vcs والاسم المستعار للمخطط git+git@<location>:<user_or_organization>/<repository>@<branch_or_tag>#<package_name>
. لاحظ أنه يتم ترجمته إلى git+ssh://git@<location>
عند التحليل.
تتضمن القيم الصالحة لـ <vcs_type>
git
و bzr
و svn
و hg
. تتضمن القيم الصالحة لـ <scheme>
http,
و https
، و ssh
، و file
. في حالات محددة، يمكنك أيضًا الوصول إلى مخططات أخرى: يمكن دمج svn
مع svn
كمخطط، ويمكن دمج bzr
مع sftp
و lp
.
لاحظ أنه يوصى بشدة بتثبيت أي تبعيات يتم التحكم فيها بالإصدار في وضع قابل للتحرير، باستخدام pipenv install -e
، لضمان إمكانية تنفيذ تحليل التبعية بنسخة محدثة من المستودع في كل مرة يتم تنفيذها، و أنه يشمل كافة التبعيات المعروفة.
فيما يلي مثال للاستخدام الذي يقوم بتثبيت مستودع git الموجود على https://github.com/requests/requests.git
من العلامة v2.19.1
requests
اسم الحزمة:
$ pipenv install -e git+https://github.com/requests/[email protected]#egg=requests
Creating a Pipfile for this project...
Installing -e git+https://github.com/requests/[email protected]#egg=requests...
[...snipped...]
Adding -e git+https://github.com/requests/[email protected]#egg=requests to Pipfile's [packages]...
[...]
يمكنك قراءة المزيد حول تنفيذ النقطة لدعم vcs هنا.
$ pipenv install pytest --dev
Installing pytest...
...
Adding pytest to Pipfile's [dev-packages]...
$ pipenv graph
requests==2.18.4
- certifi [required: >=2017.4.17, installed: 2017.7.27.1]
- chardet [required: >=3.0.2,<3.1.0, installed: 3.0.4]
- idna [required: >=2.5,<2.7, installed: 2.6]
- urllib3 [required: <1.23,>=1.21.1, installed: 1.22]
$ pipenv lock
Assuring all dependencies from Pipfile are installed...
Locking [dev-packages] dependencies...
Locking [packages] dependencies...
Note: your project now has only default [packages] installed.
To install [dev-packages], run: $ pipenv install --dev
$ pipenv install --dev
Pipfile found at /Users/kennethreitz/repos/kr/pip2/test/Pipfile. Considering this to be the project home.
Pipfile.lock out of date, updating...
Assuring all dependencies from Pipfile are installed...
Locking [dev-packages] dependencies...
Locking [packages] dependencies...
$ pipenv uninstall --all
No package provided, un-installing all dependencies.
Found 25 installed package(s), purging...
...
Environment now purged and fresh!
$ pipenv shell
Loading .env environment variables...
Launching subshell in virtual environment. Type 'exit' or 'Ctrl+D' to return.
$ ▯
لفهم المشكلات التي يحلها Pipenv، من المفيد إظهار كيفية تطور إدارة حزم Python.
عُد إلى نسخة بايثون الأولى. كان لدينا بايثون، ولكن لم تكن هناك طريقة نظيفة لتثبيت الحزم.
ثم جاءت Easy Install، وهي حزمة تقوم بتثبيت حزم Python الأخرى بسهولة نسبية. لكن الأمر جاء مصحوبًا بمشكلة: لم يكن من السهل إلغاء تثبيت الحزم التي لم تعد هناك حاجة إليها.
أدخل النقطة، التي يعرفها معظم مستخدمي بايثون. تتيح لنا النقطة تثبيت الحزم وإلغاء تثبيتها. يمكننا تحديد الإصدارات، وتشغيل pipتجميد > require.txt لإخراج قائمة بالحزم المثبتة إلى ملف نصي، واستخدام نفس الملف النصي لتثبيت كل ما يحتاجه التطبيق مع pip install -r require.txt.
لكن النقطة لم تتضمن طريقة لعزل الحزم عن بعضها البعض. قد نعمل على تطبيقات تستخدم إصدارات مختلفة من نفس المكتبات، لذلك كنا بحاجة إلى طريقة لتمكين ذلك.
يهدف Pipenv إلى حل العديد من المشاكل. أولاً، مشكلة الحاجة إلى مكتبة النقطة لتثبيت الحزمة، بالإضافة إلى مكتبة لإنشاء بيئة افتراضية، بالإضافة إلى مكتبة لإدارة البيئات الافتراضية، بالإضافة إلى جميع الأوامر المرتبطة بتلك المكتبات. هذا كثير لإدارته. يأتي Pipenv مزودًا بإدارة الحزم ودعم البيئة الافتراضية، بحيث يمكنك استخدام أداة واحدة لتثبيت تبعياتك وإلغاء تثبيتها وتتبعها وتوثيقها وإنشاء بيئاتك الافتراضية واستخدامها وتنظيمها. عندما تبدأ مشروعًا به، سيقوم Pipenv تلقائيًا بإنشاء بيئة افتراضية لهذا المشروع إذا لم تكن تستخدمه بالفعل.
ينجز Pipenv إدارة التبعية هذه من خلال التخلي عن معيار require.txt واستبداله بمستند جديد يسمى Pipfile. عند تثبيت مكتبة باستخدام Pipenv، يتم تحديث ملف Pipfile لمشروعك تلقائيًا بتفاصيل هذا التثبيت، بما في ذلك معلومات الإصدار وربما موقع مستودع Git ومسار الملف ومعلومات أخرى.
ثانيًا، يريد Pipenv تسهيل إدارة الترابطات المعقدة.
يتيح لك استخدام Pipenv، الذي يمنحك Pipfile، تجنب هذه المشكلات عن طريق إدارة التبعيات لبيئات مختلفة لك. سيقوم هذا الأمر بتثبيت تبعيات المشروع الرئيسية:
تثبيت الأنابيب
ستؤدي إضافة علامة --dev إلى تثبيت متطلبات التطوير/الاختبار:
تثبيت Pipenv --dev لإنشاء ملف Pipfile.lock، قم بتشغيل:
قفل الأنابيب
يمكنك أيضًا تشغيل البرامج النصية لـ Python باستخدام Pipenv. لتشغيل برنامج Python عالي المستوى يسمى hello.py، قم بتشغيل:
يقوم Pipenv بتشغيل بايثون hello.py
وسترى النتيجة المتوقعة في لوحة التحكم.
لبدء الصدفة، قم بتشغيل:
قذيفة الأنابيب
إذا كنت ترغب في تحويل مشروع يستخدم حاليًا ملف require.txt لاستخدام Pipenv، فقم بتثبيت Pipenv وقم بتشغيل:
متطلبات تثبيت Pipenv.txt
سيؤدي هذا إلى إنشاء ملف Pipfile وتثبيت المتطلبات المحددة.
الوثائق موجودة في Pipenv.pypa.io.