Làm cách nào để cài đặt gói yaml cho Python?


346

Tôi có một chương trình Python sử dụng YAML. Tôi đã cố gắng cài đặt nó trên một máy chủ mới bằng cách sử dụng pip install yamlvà nó trả về như sau:

$ sudo pip install yaml
Downloading/unpacking yaml
  Could not find any downloads that satisfy the requirement yaml
No distributions at all found for yaml
Storing complete log in /home/pa/.pip/pip.log

Làm cách nào để cài đặt gói yaml cho Python? Tôi đang chạy Python 2.7. (Hệ điều hành: Debian Wheezy)


thêm thông tin về nền tảng nào bạn sử dụng. libyaml. pyyaml.org/wiki/LibYAML không phải là gói python thuần túy, nó có thể gây ra cài đặt khác nhau.
Larry Cai

Câu trả lời:


567

Bạn có thể thử tính năng tìm kiếm trong pip,

$ pip search yaml

tìm kiếm các gói trong PyPI với yaml trong phần mô tả ngắn. Điều đó cho thấy các gói khác nhau, bao gồm PyYaml, yamltools và PySyck, trong số các gói khác (Lưu ý rằng các tài liệu PySyck khuyên bạn nên sử dụng PyYaml, vì syck đã hết hạn). Bây giờ bạn biết một tên gói cụ thể, bạn có thể cài đặt nó:

$ pip install pyyaml

Nếu bạn muốn cài đặt python yaml toàn hệ thống trong linux, bạn cũng có thể sử dụng trình quản lý gói, như aptitudehoặc yum:

$ sudo apt-get install python-yaml
$ sudo yum install python-yaml

9
Tên của gói PyYAML ít nhất là trên Fedora 21 và CentOS 7 là PyYAMLkhông python-yaml.
TNT

3
PyYAML thực hiện thông số YAML 1.1 cũ từ năm 2004 (Syck phiên bản 1.0 thậm chí cũ hơn). ruamel.yaml hiện là gói không lỗi thời thực hiện thông số YAML1.2
Anthon

Vậy điều gì sẽ xảy ra nếu tôi ở trên một hệ thống không có pip cũng không phải là trình quản lý gói?
FirefoxMetzger

1
@FirefoxMetzger bạn có thể lấy python , lấy pip , xây dựng LibYAML từ nguồn và cuối cùng là cài đặt PyYAML . LibYAML không được yêu cầu nghiêm ngặt vì PyYAML sẽ hoạt động với trăn thuần (mặc dù chậm hơn)
tutuDajuju

cảm ơn rất nhiều, câu trả lời của bạn đã giải quyết hoàn toàn câu hỏi của tôi
sói


49

Cập nhật: Ngày nay việc cài đặt được thực hiện với pip, nhưng libyaml vẫn được yêu cầu để xây dựng tiện ích mở rộng C (trên mac):

brew install libyaml
python -m pip install pyyaml

Phương pháp lỗi thời :

Đối với MacOSX (mavericks), cách sau có vẻ hoạt động:

brew install libyaml
sudo python -m easy_install pyyaml

6
Đây là câu trả lời duy nhất cho OS X Yosemite khi tôi thử.
Nima

1
Điều này làm việc cho tôi trên Yosemite, nhưng chỉ với python 2.7.9, không phải python 2.7.6.
David Moles

Đây là câu trả lời duy nhất cho OS X Lion khi tôi thử. Cám ơn rất nhiều! Tôi nghĩ rằng nó không hoạt động vì tôi đã sử dụng một hệ điều hành năm 2011 vào năm 2020.
TheTechRobo36414519

20
pip install PyYAML

Nếu libyaml không được tìm thấy hoặc biên dịch, PyYAML có thể thực hiện mà không cần trên Mavericks.


Trên Ubuntu 14.04 LTS, tôi gặp lỗi libyaml is not found or a compiler error: forcing --without-libyamlkhi sử dụng sudo pip install PyYAML. Tôi nên làm gì? Cảm ơn.
hengxin

1
Tuy nhiên, tôi nói Successfully installed PyYAML. Xem pip-PyYAML để biết thông tin đầy đủ. Cảm ơn một lần nữa.
hengxin

14

Có ba gói YAML có khả năng. Syck ( pip install syck) thực hiện đặc tả YAML 1.0 từ năm 2002; PyYAML ( pip install pyyaml) tuân theo thông số YAML 1.1 từ năm 2004; và ruamel.yaml theo thông số kỹ thuật mới nhất (YAML 1.2, từ 2009).

Bạn có thể cài đặt gói tương thích YAML 1.2 với pip install ruamel.yamlhoặc nếu bạn đang chạy phiên bản hiện đại của Debian / Ubuntu (hoặc phái sinh) với:

sudo apt-get install python-ruamel.yaml

6

Các hệ thống dựa trên Debian:

$ sudo aptitude install python-yaml

hoặc mới hơn cho python3

$ sudo aptitude install python3-yaml



3

"Nên có một - và tốt nhất là chỉ có một - cách rõ ràng để làm điều đó." Vì vậy, hãy để tôi thêm một cái khác. Cái này giống như "cài đặt từ nguồn" cho Debian / Ubuntu, từ https://github.com/yaml/pyyaml

Cài đặt libYAML và tiêu đề của nó:

sudo apt-get install libyaml-dev

Tải về các nguồn pyyaml:

wget http://pyyaml.org/download/pyyaml/PyYAML-3.13.tar.gz

Cài đặt từ các nguồn, (đừng quên kích hoạt venv của bạn):

. your/env/bin/activate
tar xzf PyYAML-3.13.tar.gz
cd PyYAML-3.13.tar.gz
(env)$ python setup.py install
(env)$ python setup.py test 

Đây là phương pháp duy nhất khiến tôi cài đặt chính xác CLoaders trên MacOS. Trước đây tôi đã thử brew install libyaml & pip install pyyamlnhưng, python -c 'from yaml import CSafeLoader'vẫn thất bại
Luis Meraz

1

Sử dụng strictyaml thay thế

Nếu bạn có khả năng tự tạo tệp yaml hoặc nếu bạn không yêu cầu bất kỳ tính năng nào trong số các tính năng này của yaml thông thường, tôi khuyên bạn nên sử dụng strictyamlthay vì pyyamlgói tiêu chuẩn .

Nói tóm lại, yaml mặc định có một số sai sót nghiêm trọng về bảo mật, giao diện và khả năng dự đoán. strictyamllà một tập hợp con của thông số yaml không có những vấn đề đó (và được ghi lại tốt hơn).

Bạn có thể đọc thêm về các vấn đề với yaml thường xuyên ở đây

HOẠT ĐỘNG: strictyaml nên là cài đặt mặc định của yaml và thông số yaml cũ sẽ bị lỗi thời.


0

Đối với tôi, cài đặt phiên bản phát triển của libyaml đã làm điều đó.

yum install libyaml-devel         #centos
apt-get install libyaml-dev       # ubuntu

Vui lòng bao gồm các giải thích rằng đó là cài đặt Python trên toàn hệ thống, kiến ​​trúc x86-64 của hệ thống, nên có lệnh tương tự cho APT ...
George Sovetov

1
@GeorgeSovetov Xong
Mayank Jaiswal

@MayankJaiswal Bạn sẽ cài đặt phiên bản phát triển cho Python 3 như thế nào?
Amir
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.