đã cập nhật: 2019-05-11: Bài đăng này chủ yếu đề cập virtualenv
, nhưng theo tài liệu Python về cài đặt mô-đun , vì Python 3.5 "việc sử dụng venv
hiện được khuyến nghị để tạo môi trường ảo", trong khi đó virtualenv
là một thay thế cho các phiên bản Python trước 3.4 .
đã cập nhật: 2018-08-17: kể từ khi conda-4.4.0 sử dụng conda
cho activate
anaconda trên tất cả các nền tảng
đã cập nhật: 2017-03-27: PEP 513 - manylinux
nhị phân cho PyPI
đã cập nhật: 2016-08-19: Tùy chọn Anaconda liên tục
Đây là một bản sao của easy_install / pip hoặc apt-get .
Đối với các gói Python toàn cầu , hãy sử dụng Trung tâm phần mềm Ubuntu, apt, apt-get hoặc synaptic
Ubuntu sử dụng Python cho nhiều chức năng quan trọng, do đó việc can thiệp vào Python có thể làm hỏng hệ điều hành của bạn. Đây là lý do chính tôi không bao giờ sử dụng pip
trên hệ thống Ubuntu của tôi, nhưng thay vào đó tôi sử dụng hoặc Ubuntu Software Center, synaptic , apt-get
hoặc mới hơn chỉ apt
, mà tất cả theo mặc định cài đặt các gói từ kho Ubuntu . Các gói này đã được thử nghiệm, thường được biên dịch trước để chúng cài đặt nhanh hơn và cuối cùng được thiết kế cho Ubuntu. Ngoài ra, tất cả các phụ thuộc cần thiết cũng được cài đặt và nhật ký cài đặt được duy trì để chúng có thể được khôi phục. Tôi nghĩ rằng hầu hết các gói đều có repos Launchpad tương ứng để bạn có thể gửi các vấn đề.
Một lý do khác để sử dụng các gói Ubuntu là đôi khi các gói Python này có các tên khác nhau tùy thuộc vào nơi bạn đã tải chúng xuống. Python-chardet là một ví dụ về một gói mà tại một thời điểm được đặt tên là một thứ trên PyPI và một thứ khác trong kho lưu trữ Ubuntu. Do đó, làm điều gì đó như pip install requests
sẽ không nhận ra rằng chardet đã được cài đặt trong hệ thống của bạn vì phiên bản Ubuntu có một tên khác và do đó cài đặt một phiên bản mới sẽ làm hỏng hệ thống của bạn theo cách không đáng kể nhưng tại sao bạn lại làm vậy.
Nói chung, bạn chỉ muốn cài đặt mã đáng tin cậy vào hệ điều hành của mình. Vì vậy, bạn nên lo lắng về việc gõ $ sudo pip <anything-could-be-very-bad>
.
Cuối cùng, một số thứ chỉ dễ cài đặt hơn bằng các gói Ubuntu. Ví dụ: nếu bạn cố gắng pip install numpy
cài đặt numpy & scipy trừ khi bạn đã cài đặt gfortran, atlas-dev, blas-dev và lapack-dev, bạn sẽ thấy một luồng lỗi biên dịch vô tận. Tuy nhiên, cài đặt numpy & scipy thông qua kho lưu trữ Ubuntu dễ dàng như ...
$ sudo apt-get install python-numpy python-scipy
Bạn thật may mắn, vì bạn đang sử dụng Ubuntu, một trong những bản phân phối được cập nhật và hỗ trợ rộng rãi nhất hiện có. Nhiều khả năng mọi gói Python bạn cần đều có trong kho Ubuntu và có thể đã được cài đặt trên máy của bạn. Và cứ sau 6 tháng, một chu kỳ gói mới sẽ được phát hành với bản phân phối Ubuntu mới nhất.
Nếu bạn tin tưởng 100% rằng gói sẽ không can thiệp vào hệ thống Ubuntu của bạn theo bất kỳ cách nào, thì bạn có thể cài đặt nó bằng pip và Ubuntu đủ tốt để tách các gói này khỏi các gói distro bằng cách đặt các gói distro vào một thư mục có tên dist-packages/
. Kho lưu trữ Ubuntu có cả pip, virtualenv và setuptools. Tuy nhiên, tôi đề nghị thứ hai của Wojciech sử dụng virtualenv.
Đối với các dự án Python cá nhân, sử dụng pip và bánh xe trong virtualenv
Nếu bạn cần phiên bản mới nhất hoặc mô-đun không có trong kho lưu trữ Ubuntu thì hãy khởi động virtualenv và sử dụng pip để cài đặt gói. Mặc dù pip và setuptools đã hợp nhất, pip IMO được ưu tiên hơn cài đặt dễ dàng hoặc distutils, bởi vì nó sẽ luôn đợi cho đến khi gói được tải xuống và xây dựng hoàn chỉnh trước khi sao chép nó vào hệ thống tệp của bạn và nó giúp nâng cấp hoặc gỡ cài đặt dễ dàng. Theo nhiều cách, nó tương tự như apt-get, ở chỗ nó thường xử lý tốt các phụ thuộc. Tuy nhiên bạn sẽ có thể phải xử lý một số phụ thuộc chính mình, nhưng vì PEP 513 đã được thông qua hiện nay có manylinux
mã nhị phân vào Python Package Index (PyPI) cho distro Linux phổ biến như Ubuntu và Fedora .ví dụ như đã đề cập ở trên cho NumPy và scipy chắc chắn rằng bạn đã cài đặt gfortran, atlas-dev, blas-dev và LAPACK-dev từ kho Ubuntu Ví dụ, cả hai NumPy và scipy hiện đang phân phối cho Ubuntu như manylinux
bánh xe theo mặc định OpenBLAS sử dụng thay vì của ATLAS. Bạn vẫn có thể xây dựng chúng từ nguồn bằng cách sử dụng các tùy chọn pip --no-use-wheel
hoặc--no-binary <format control>
.
~$ sudo apt-get install gfortran libblas-dev liblapack-dev libatlas-dev python-virtualenv
~$ mkdir ~/.venvs
~$ virtualenv ~/.venvs/my_py_proj
~$ source ~/.venvs/my_py_proj/bin/activate
~(my_py_proj)$ pip install --no-use-wheel numpy scipy
Xem phần tiếp theo, "Bạn không ở trong sudoers
", bên dưới để cài đặt các phiên bản cập nhật của pip, setuptools, virtualenv hoặc bánh xe vào hồ sơ cá nhân của bạn bằng cách sử dụng --user
sơ đồ cài đặt với pip. Bạn có thể sử dụng điều này để cập nhật pip cho mục đích sử dụng cá nhân của bạn như JF Sebastian đã chỉ ra trong nhận xét của mình cho câu trả lời khác . LƯU Ý: điều -m
này thực sự chỉ cần thiết trên MS Windows khi cập nhật pip .
python -m pip install --user pip setuptools wheel virtualenv
Các phiên bản mới hơn của pip tự động bộ đệm bánh xe, vì vậy những điều sau đây chỉ hữu ích cho các phiên bản cũ hơn của pip. Vì cuối cùng bạn có thể cài đặt những thứ này nhiều lần, hãy xem xét sử dụng bánh xe với pip để tạo ra một buồng lái. Bánh xe đã được bao gồm trong virtualenv
v13.0.0 do đó nếu phiên bản của bạn virtualenv
quá cũ, bạn có thể cần phải cài đặt bánh xe trước.
~(my_py_proj)$ pip install wheel # only for virtualenv < v13.0.0
~(my_py_proj)$ pip wheel --no-use-wheel numpy scipy
Điều này sẽ tạo tập tin bánh xe nhị phân trong <cwd>/wheelhouse
, sử dụng -d
để chỉ định một thư mục khác. Bây giờ nếu bạn bắt đầu một virtualenv khác và bạn cần các gói tương tự bạn đã xây dựng, bạn có thể cài đặt chúng từ nhà xe của bạn bằng cách sử dụngpip install --find-links=<fullpath>/wheelhouse
Đọc Cài đặt Mô-đun Python trong tài liệu Python và Cài đặt gói trên trang chính của Chỉ mục gói Python . Ngoài ra pip , venv , virtualenv và bánh xe .
Nếu bạn không vào sudoers
và virtualenv
không được cài đặt.
Một tùy chọn khác để sử dụng môi trường ảo hoặc nếu bạn đang sử dụng chia sẻ Linux mà không có quyền root, thì sử dụng các lược đồ cài đặt --user
hoặc --home=<wherever-you-want>
Python với Python distutils
sẽ cài đặt các gói theo giá trị site.USERBASE
hoặc đến bất cứ nơi nào bạn muốn. Các phiên bản mới hơn của pip cũng có một --user
tùy chọn. Đừng dùng sudo
!
pip install --user virtualenv
Nếu phiên bản Linux của pip của bạn quá cũ, thì bạn có thể chuyển các tùy chọn thiết lập bằng cách sử dụng --install-option
hữu ích để chuyển tùy chọn tùy chỉnh cho một số setup.py
tập lệnh cho một số gói xây dựng tiện ích mở rộng, chẳng hạn như cài đặt PREFIX
. Bạn có thể chỉ cần giải nén phân phối và sử dụng distutils
để cài đặt gói theo cách cũ của trường bằng cách nhập python setup install [options]
. Đọc một số tài liệu cài đặt và distutils
tài liệu có thể giúp đỡ.
Python đủ tốt để thêm site.USERBASE
vào PYTHONPATH
trước bất kỳ điều gì khác, vì vậy những thay đổi sẽ chỉ ảnh hưởng đến bạn. Một vị trí phổ biến cho --home
là ~/.local
. Xem hướng dẫn cài đặt mô-đun Python để biết cấu trúc tệp chính xác và cụ thể nơi gói trang web của bạn. Lưu ý : nếu bạn sử dụng các --home
chương trình cài đặt thì bạn có thể cần phải thêm nó vào PYTHONPATH
biến môi trường sử dụng export
trong của bạn .bashrc
, .bash_profile
hoặc trong vỏ của mình đối với các gói địa phương của bạn có sẵn trong Python.
Sử dụng Continuum Anaconda Python cho các dự án toán học, khoa học, dữ liệu hoặc cá nhân
Nếu bạn đang sử dụng Python cho toán học, khoa học hoặc dữ liệu, thì IMO một lựa chọn thực sự tốt là Phân phối Anaconda-Python hoặc phân phối miniconda cơ bản hơn do Anaconda, Inc. (trước đây gọi là Phân tích liên tục ) . Mặc dù bất cứ ai cũng có thể hưởng lợi từ việc sử dụng Anaconda cho các dự án cá nhân, cài đặt mặc định bao gồm hơn 500 gói toán học và khoa học như NumPy, SciPy, Pandas và Matplotlib , trong khi miniconda chỉ cài đặt Anaconda-Python và trình quản lý môi trường conda. Anaconda chỉ cài đặt vào hồ sơ cá nhân của bạn, tức là: /home/<user>/
và thay đổi ~/.bashrc
hoặc ~/.bash_profile
để chuẩn bị đường dẫn của Anaconda đến cá nhân của bạn $PATH
đề xuất tìm nguồn cung ứngconda.sh
trong ~/.bashrc
đó cho phép bạn sử dụng conda activate <env|default is base>
để bắt đầu anaconda - điều này chỉ ảnh hưởng đến bạn - đường dẫn hệ thống của bạn không thay đổi . Do đó, bạn không cần quyền truy cập root hoặc sudo
sử dụng Anaconda! Nếu bạn đã thêm Anaconda-Python, miniconda hoặc conda vào đường dẫn cá nhân của mình, thì bạn nên xóa bản PATH
xuất khỏi ~/.bashrc
và cập nhật lên khuyến nghị mới , vì vậy Python hệ thống của bạn sẽ trở lại trước tiên.
Điều này hơi giống với --user
tùy chọn mà tôi đã giải thích trong phần trước, ngoại trừ nó áp dụng cho toàn bộ Python và không chỉ các gói. Do đó, Anaconda hoàn toàn tách biệt với Python hệ thống của bạn , nó sẽ không can thiệp vào Python hệ thống của bạn và chỉ bạn mới có thể sử dụng hoặc thay đổi nó. Vì nó cài đặt phiên bản Python mới và tất cả các thư viện của nó, bạn sẽ cần ít nhất 200 MB phòng, nhưng rất thông minh về bộ nhớ đệm và quản lý thư viện, điều quan trọng đối với một số điều thú vị bạn có thể làm với Anaconda.
Anaconda quản lý một bộ sưu tập các tệp nhị phân và thư viện Python được yêu cầu bởi các phụ thuộc trong kho lưu trữ trực tuyến (trước đây gọi là binstar ) và chúng cũng lưu trữ các gói người dùng dưới dạng các "kênh" khác nhau. Trình quản lý gói được sử dụng bởi Anaconda, conda
theo mặc định sẽ cài đặt các gói từ Anaconda, nhưng bạn có thể báo hiệu một "kênh" khác bằng cách sử dụng -c
tùy chọn.
Cài đặt các gói conda
giống như pip
:
$ conda install -c pvlib pvlib # install pvlib pkg from pvlib channel
Nhưng conda
có thể làm nhiều hơn thế! Nó cũng có thể tạo và quản lý môi trường ảo giống như virtualenv
. Do đó, vì Anaconda tạo môi trường ảo, pip
trình quản lý gói có thể được sử dụng để cài đặt các gói từ PyPI vào môi trường Anaconda mà không cần root hoặc sudo
. Đừng không sử dụng sudo
với Anaconda! Cảnh báo! Hãy cẩn thận mặc dù khi trộn pip
và conda
trong môi trường Anaconda, b / c bạn sẽ phải quản lý các gói phụ thuộc cẩn thận hơn. Một lựa chọn khác pip
trong môi trường conda là sử dụng kênh conda-forge, nhưng cũng tốt nhất để làm điều đó trong một môi trường conda mới với conda-forge là kênh mặc định. Như một phương sách cuối cùng, nếu bạn không thể tìm thấy một gói ở bất cứ đâu ngoài PyPI, hãy cân nhắc sử dụng --no-deps
sau đó cài đặt các phụ thuộc còn lại bằng tay bằng cách sử dụng conda
.
Anaconda cũng tương tự như một số cách với Ruby RVM nếu bạn quen thuộc với công cụ đó. Anaconda conda
cũng cho phép bạn tạo các môi trường ảo với các phiên bản Python khác nhau . ví dụ : conda create -n py35sci python==3.5.2 numpy scipy matplotlib pandas statsmodels seaborn
sẽ tạo ra một ngăn xếp khoa học / dữ liệu khoa học bằng Python-3.5 trong một môi trường mới được gọi là py35sci
. Bạn có thể chuyển đổi môi trường bằng cách sử dụng conda
. Kể từ conda-4.4.0, giờ đây nó khác với cách virtualenv
sử dụng source venv/bin/activate
, nhưng trước đây với conda-4.4.0, các conda
lệnh giống như virtualenv
và cũng được sử dụng source
:
# AFTER conda-4.4
~/Projects/myproj $ conda activate py35sci
# BEFORE conda-4.4
~/Projects/myproj $ source activate py35sci
Nhưng xin chờ chút nữa! Anaconda cũng có thể cài đặt các ngôn ngữ khác nhau như R để lập trình thống kê từ kênh Anacondar
. Bạn thậm chí có thể thiết lập kênh của riêng mình để tải lên các bản phân phối gói được xây dựng cho conda . Như đã đề cập, conda-forge duy trì các bản dựng tự động của nhiều gói trên PyPI tại kênh Anaconda của conda-forge .
Phần kết
Có nhiều tùy chọn để duy trì các dự án Python của bạn trên Linux tùy thuộc vào nhu cầu và quyền truy cập cá nhân của bạn. Tuy nhiên, nếu có một điều tôi hy vọng bạn bỏ qua câu trả lời này là bạn hầu như không bao giờ cần phải sử dụng sudo
để cài đặt các gói Python . Việc sử dụng sudo
nên là một mùi cho bạn rằng một cái gì đó là không ổn. Bạn đã được cảnh báo.
Chúc may mắn và hạnh phúc mã hóa!