2012-06-25 19 views
10

Chỉ cần một câu hỏi nhanh, làm thế nào để tôi nhận được pypy để nhận ra mô-đun thứ ba pary mà tôi có trong Python? Ví dụ, tôi nhận được lỗi sau.Bắt Pypy để nhận dạng mô-đun bên thứ ba

from tables import * 
ImportError: No Module named tables 

Về cơ bản, nói rằng nó không thể tìm thấy thư viện pytables mà tôi sử dụng để tương tác trong tập lệnh mà tôi đang cố gắng chạy.

Trả lời

7

Đối với module trăn tinh khiết, chỉ cần thêm thư mục chứa các mô-đun để sys.path của bạn, sử dụng một cái gì đó như:

sys.path.insert(0, '/usr/local/lib') 
sys.path.insert(0, os.path.expanduser('~/lib')) 

này làm việc cho CPython, PyPy và Jython.

Đối với các module mở rộng C, bạn có thể thử cpyext PyPy, nhưng nó sẽ không chạy tất cả mọi thứ bạn có thể hy vọng, bởi vì một số module mở rộng CPython C đi lang thang vào góc tối của runtime C dựa trên CPython của: http://morepypy.blogspot.com/2010/04/using-cpython-extension-modules-with.html

Đôi khi tôi viết mã sử dụng ctypes để giao tiếp với một C.so, và sau đó sử dụng trên cả hai CPython và Pypy, bởi vì cả hai đều làm khá tốt với ctypes - nhưng ctypes có thể được kinda chậm trên CPython: http://docs.python.org/library/ctypes.html Cuối cùng tôi đã kiểm tra, Jython có sự khởi đầu của ctypes, nhưng nó không đủ xa để sử dụng, ít nhất là không vì mục đích của tôi.

Ngoài ra còn có giao diện mới yêu cầu trình biên dịch C khi chạy. Nó có thể sẽ ít giòn hơn (đọc: dễ bị segfaults) so với ctypes. Nó được mô tả ở đây: http://morepypy.blogspot.com/2012/06/release-01-of-cffi.html Nó xuất phát từ dự án Pypy tôi tin, nhưng nó đã được thực hiện để làm việc đầu tiên trên CPython. AFAIK, nó chưa chạy trên Pypy.

5

Pypy có không gian cài đặt riêng biệt. Vì vậy, bất kỳ mô-đun nào bạn muốn cài đặt từ pypi nên được cài đặt vào không gian của nó. Vì vậy, ví dụ, tôi đã cài đặt pypy trong /usr/local/pypy-1.9-32bit

Tôi khuyên bạn nên sử dụng pip hoặc easy_install. Dưới đây là làm thế nào để cài đặt pip, nhưng liên kết mới cho distribute_setup.py cần phải được tìm thấy:

curl DEAD_LINK /distribute_setup.py | /usr/local/pypy-1.9-32bit/bin/pypy 
curl https://raw.github.com/pypa/pip/master/contrib/get-pip.py | /usr/local/pypy-1.9-32bit/bin/pypy 

Sau đó, chỉ cần sử dụng pip mới được cài đặt để có được những mô-đun:

sudo /usr/local/pypy-1.9-32bit/bin/pip install tables 

Trong trường hợp này, nó thất bại, với các lỗi sau:

[email protected]:/tmp$ sudo /usr/local/pypy-1.9-32bit/bin/pip install tables 
Downloading/unpacking tables 
    Downloading tables-2.4.0.tar.gz (8.9Mb): 8.9Mb downloaded 
    Running setup.py egg_info for package tables 
    .. ERROR:: You need numpy 1.4.1 or greater to run PyTables! 
    Complete output from command python setup.py egg_info: 
    .. ERROR:: You need numpy 1.4.1 or greater to run PyTables! 

không cài đặt được trong trường hợp này, bởi vì Bàn phụ thuộc vào numpy, mà chưa được hỗ trợ bởi PyPy (mặc dù họ đang làm việc trên nó, xem http://pypy.org/numpydonate.html). Tuy nhiên, đối với nhiều mô-đun python, phương thức này hoạt động rất tốt. Ví dụ, tôi đã cài đặt thành công gói ràng buộc logilab theo cách này.

+0

http://python-distribute.org đã được một trang trại liên kết tiếp quản và có thể sử dụng các công cụ thiết lập thay thế. –

3

Sao chép thư mục cho mô-đun từ C: \ Python27 \ Lib sang C: \ pypy-2.3.1-win32 \ lib-python hoặc tương đương với nơi bạn đã cài đặt chúng.

Rõ ràng, điều này sẽ chỉ hoạt động trên Windows.

+0

Tôi rất gần như gắn cờ điều này bởi vì bạn bắt đầu với "Tôi có vấn đề này quá ..." Chỉ cần đưa ra câu trả lời. Không hơn không kém. Không phải là một bài đăng đầu tiên xấu mặc dù! – BradleyDotNET

+0

(Bạn đã chỉnh sửa nó, đưa ra lời khuyên của bạn và thậm chí một số khuyến khích - một câu trả lời khá hữu ích, thực sự. Nhưng mục đích chính xác mà bạn cho là "mối đe dọa" được thêm vào là gì? bạn có thể biết điều đó. Tôi chắc chắn, là một người mới.) –

3

Như đã nêu trong các câu trả lời khác, pypy có một không gian riêng cho các mô-đun đã cài đặt.Tôi thấy cách dễ nhất để thêm một module để PyPy được như sau:

  • tải về nguồn (ví dụ như một *.tar.gz tập tin)
  • chiết xuất, cd vào thư mục trích
  • chạy pypy setup.py install (đôi khi bạn cần để thêm một số sudo)
+0

tôi đã làm điều đó, nó đã cài đặt thành công lib nhưng tôi lại gặp lỗi cho một mô-đun i được nhập vào mã python – curious

1

Thực ra, có pip_pypy khi bạn cài đặt pypy. Xem tại đây:

screenshot.

Sau đó cài đặt mô-đun thứ ba với pip_pypy.