2012-07-12 19 views
17

Có ai biết logic đằng sau tên mô-đun Python so với tên của gói thực tế được sử dụng trong easy_install không?Đặt tên của gói Python, tên của mô-đun cần nhập là gì?

Một vài (giữa những người khác) ví dụ mà có vẻ hơi unlogical với tôi:

  • Chúng tôi làm easy_install mysql-python, nhưng việc nhập khẩu là trên thực tế import MySQLdb
  • Chúng tôi làm easy_install python-memcached, nhưng việc nhập khẩu là trên thực tế import memcache (không có dấu gạch chéo d)

Tôi không tìm được cách nhất quán để tìm ra sự tương đương. Đối với một số mô-đun, nó đã cho tôi rất nhiều duyệt để tìm thấy nó. Tôi đang làm gì sai?

+3

Đó là vào nhà duy trì gói làm thế nào để đặt tên cho các gói và các module bên trong nó. –

+10

Tôi đang bỏ phiếu để mở lại. Chỉ vì không có câu trả lời hay không không có nghĩa là đó không phải là một câu hỏi hay, và tôi ghét phải thấy nó bị xóa trong sự phù hợp của việc dọn phòng. –

Trả lời

13

Đáng tiếc, không có phương pháp nào cho sự điên rồ. Tên trong số package index độc lập với tên mô-đun bạn import. Disastrously some packages share module names. Nếu bạn cài đặt cả hai, ứng dụng của bạn sẽ phá vỡ với tỷ lệ cược thậm chí. (Ruby has this problem too)


Bao bì bằng Python thường rất nghiêm trọng. Nguyên nhân gốc rễ là ngôn ngữ gửi mà không có trình quản lý gói. Ruby và Nodejs với các nhà quản lý gói đầy đủ tính năng Gem và Npm, và đã nuôi dưỡng các cộng đồng tập trung xung quanh GitHub. Npm làm cho publishing packages dễ dàng như cài đặt chúng. Nodejs đến năm 2009 và đã có 14k packages. Chỉ mục gói Python đáng kính liệt kê 24k. Ruby Gems liệt kê 44k gói.

May mắn thay, có một trình quản lý gói phù hợp cho Python, được gọi là Pip. Pip được lấy cảm hứng từ Gem của Ruby, nhưng lại thiếu một số tính năng quan trọng (ví dụ: các gói danh sách, và upgrading en mass). Trớ trêu thay, Pip chính nó là complicated to install. Cài đặt trên Windows 64 bit phổ biến yêu cầu xây dựng và cài đặt hai gói từ nguồn. Đây là một yêu cầu lớn đối với bất kỳ ai mới lập trình.

Các nhà phát triển của Python không biết gì về sự thất vọng này vì họ là những lập trình viên dày dạn xây dựng thoải mái từ nguồn và họ sử dụng bản phân phối Linux với các mô-đun Python đóng gói.

Cho đến khi Python giao hàng với người quản lý gói, hàng nghìn nhà phát triển sẽ tốn thời gian để tái chế bánh xe.


Python 3 giải quyết nhiều vấn đề với bao bì. Có aren't any packages for Python 3.

+1

Tôi chắc chắn hy vọng câu trả lời này là một phần lưỡi-trong-má. Tôi giữ cho bản thân mình phần của điều này * không thể * được nghiêm trọng, nhưng các bộ phận khác được tại chỗ trên ... – delnan

+0

Có cài đặt pip trên win64 thực sự là xấu? Tôi thường chỉ cần tải xuống trình cài đặt setuptools, sau đó chạy 'easy_install pip'. Mặc dù tôi đang sử dụng 32 bit python, vì vậy có lẽ đó là nơi sự khác biệt nằm. – obmarg

+0

Đúng vậy. Không có trình cài đặt [setuptools] (http://pypi.python.org/pypi/setuptools/) cho Python 64 bit. "Hiện tại, được cung cấp.Trình cài đặt exe không hỗ trợ các phiên bản Python 64 bit cho Windows, do vấn đề tương thích với trình cài đặt ". Tôi không khuyến khích bạn bè cài đặt Python bit 64. –