Pipenv เป็นเครื่องมือการจัดการ Python virtualenv ที่รองรับระบบจำนวนมากและเชื่อมช่องว่างระหว่าง pip, python (โดยใช้ระบบ 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
ค้นหาล่าม Python
ติดตั้งแพ็คเกจ
กำลังติดตั้งจาก git
ติดตั้งการพึ่งพา dev
แสดงกราฟการพึ่งพา
สร้างไฟล์ล็อค
ติดตั้งการพึ่งพา dev ทั้งหมด
ถอนการติดตั้งทุกอย่าง
ใช้เปลือก
เอกสารประกอบ
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)"
เปิดใช้งานการใช้ Magic Shell สำเร็จแล้ว!
$ 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 ของ pip ได้ที่นี่
$ 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 มีการพัฒนาอย่างไร
พาตัวเองกลับไปสู่การวนซ้ำ Python ครั้งแรก เรามี Python แต่ไม่มีวิธีที่สะอาดในการติดตั้งแพ็คเกจ
จากนั้นก็มาถึง Easy Install ซึ่งเป็นแพ็คเกจที่ติดตั้งแพ็คเกจ Python อื่น ๆ ได้อย่างง่ายดาย แต่มีข้อน่าสังเกตคือ มันไม่ง่ายเลยที่จะถอนการติดตั้งแพ็คเกจที่ไม่จำเป็นอีกต่อไป
ป้อน pip ซึ่งผู้ใช้ Python ส่วนใหญ่คุ้นเคย pip ให้เราติดตั้งและถอนการติดตั้งแพ็คเกจ เราสามารถระบุเวอร์ชัน เรียกใช้ pip freeze > needs.txt เพื่อส่งออกรายการแพ็คเกจที่ติดตั้งไปยังไฟล์ข้อความ และใช้ไฟล์ข้อความเดียวกันนั้นเพื่อติดตั้งทุกสิ่งที่แอปต้องการด้วย pip install -r needs.txt
แต่ pip ไม่ได้รวมวิธีแยกแพ็คเกจออกจากกัน เราอาจทำงานกับแอปที่ใช้ไลบรารีเดียวกันในเวอร์ชันที่แตกต่างกัน ดังนั้นเราจึงจำเป็นต้องมีวิธีในการเปิดใช้งาน
Pipenv มีเป้าหมายเพื่อแก้ไขปัญหาหลายประการ ประการแรก ปัญหาของการต้องใช้ไลบรารี pip สำหรับการติดตั้งแพ็คเกจ รวมถึงไลบรารีสำหรับการสร้างสภาพแวดล้อมเสมือน รวมถึงไลบรารีสำหรับการจัดการสภาพแวดล้อมเสมือน รวมถึงคำสั่งทั้งหมดที่เกี่ยวข้องกับไลบรารีเหล่านั้น นั่นเป็นเรื่องที่ต้องจัดการมากมาย Pipenv มาพร้อมกับการจัดการแพ็กเกจและการสนับสนุนสภาพแวดล้อมเสมือน ดังนั้นคุณสามารถใช้เครื่องมือเดียวในการติดตั้ง ถอนการติดตั้ง ติดตาม และจัดทำเอกสารการขึ้นต่อกันของคุณ ตลอดจนสร้าง ใช้งาน และจัดระเบียบสภาพแวดล้อมเสมือนของคุณได้ เมื่อคุณเริ่มโปรเจ็กต์ด้วย Pipenv จะสร้างสภาพแวดล้อมเสมือนสำหรับโปรเจ็กต์นั้นโดยอัตโนมัติหากคุณยังไม่ได้ใช้งาน
Pipenv จัดการการพึ่งพานี้ให้สำเร็จโดยละทิ้งบรรทัดฐาน Requirements.txt และแลกเปลี่ยนกับเอกสารใหม่ที่เรียกว่า Pipfile เมื่อคุณติดตั้งไลบรารีด้วย Pipenv Pipfile สำหรับโปรเจ็กต์ของคุณจะได้รับการอัปเดตโดยอัตโนมัติพร้อมรายละเอียดของการติดตั้งนั้น รวมถึงข้อมูลเวอร์ชันและตำแหน่งที่เก็บ Git เส้นทางของไฟล์ และข้อมูลอื่น ๆ
ประการที่สอง Pipenv ต้องการทำให้การจัดการการพึ่งพาซึ่งกันและกันที่ซับซ้อนง่ายขึ้น
การใช้ Pipenv ซึ่งให้ Pipfile แก่คุณ ช่วยให้คุณหลีกเลี่ยงปัญหาเหล่านี้โดยการจัดการการขึ้นต่อกันสำหรับสภาพแวดล้อมที่แตกต่างกันสำหรับคุณ คำสั่งนี้จะติดตั้งการพึ่งพาโครงการหลัก:
ติดตั้ง Pipenv
การเพิ่มแท็ก --dev จะติดตั้งข้อกำหนด dev/test:
pipenv install --dev หากต้องการสร้างไฟล์ Pipfile.lock ให้รัน:
ล็อค Pipenv
คุณยังสามารถรันสคริปต์ Python ด้วย Pipenv ได้ หากต้องการรันสคริปต์ Python ระดับบนสุดที่เรียกว่า hello.py ให้รัน:
Pipenv รันหลาม hello.py
และคุณจะเห็นผลลัพธ์ที่คาดหวังในคอนโซล
หากต้องการเริ่มเชลล์ ให้รัน:
เปลือก pipenv
หากคุณต้องการแปลงโปรเจ็กต์ที่ใช้ไฟล์ Requirement.txt ในปัจจุบันเพื่อใช้ Pipenv ให้ติดตั้ง Pipenv และรัน:
ข้อกำหนดในการติดตั้ง Pipenv.txt
สิ่งนี้จะสร้าง Pipfile และติดตั้งข้อกำหนดที่ระบุ
เอกสารอยู่ที่pipenv.pypa.io