Tài nguyên pkg-resource là gì == 0,0.0 trong đầu ra của lệnh đóng băng pip


157

Khi tôi chạy pip freezetôi thấy (trong số các gói dự kiến ​​khác) pkg-resources==0.0.0. Tôi đã thấy một vài bài viết đề cập đến gói này (bao gồm cả gói này ), nhưng không có gì giải thích nó là gì, hoặc tại sao nó được bao gồm trong đầu ra của pip freeze. Lý do chính tôi tự hỏi là vì tò mò, nhưng cũng có thể, có vẻ như phá vỡ mọi thứ trong một số trường hợp khi cố gắng cài đặt các gói với một requirements.txttập tin được tạo ra với pip freezebao gồm các pkg-resources==0.0.0dòng (ví dụ như khi Travis CI cố gắng để cài đặt phụ thuộc qua pipvà tìm thấy này hàng).

Điều gì là pkg-resources, và nó có ổn để loại bỏ dòng này khỏi requirements.txt?

Cập nhật:

Tôi đã thấy rằng dòng này dường như chỉ tồn tại trong đầu ra pip freezekhi tôi ở a virtualenv. Tôi vẫn không chắc nó là gì hay nó làm gì, nhưng tôi sẽ điều tra thêm khi biết rằng nó có khả năng liên quan đến virtualenv.


"nó dường như phá vỡ mọi thứ trong một số trường hợp khi cố gắng cài đặt các gói với tệp tests.txt được tạo bằng đóng băng pip bao gồm dòng pkg-resource == 0.0.0." . Bạn có thể đưa ra một ví dụ cho điều đó?
Dimitris Fasarakis Hilliard

@Jim, điểm tốt. Tôi đã thêm ví dụ mà tôi gặp phải.
elethan

hm, phiên bản của bạn là pipgì? Tôi nghĩ rằng đây có thể là một cái gì đó họ đã bỏ lỡ trong một bản phát hành cũ vì trong 8.1.2tôi không có mục nào cho pkg-resources. (Điều này không nên vì tôi khá chắc chắn pkg-resourcesđi kèm setuptools).
Dimitris Fasarakis Hilliard

1
@Jim chỉ xảy ra với tôi rằng nó có thể liên quan đến virtualenv, và thực sự, khi tôi không ở trong một virtualenv tôi cũng không thấy điều đó. Điều này vẫn không giải thích nó là gì, nhưng ít nhất là một manh mối mà tôi có thể điều tra.
elethan

Câu trả lời:


181

Theo https://github.com/pypa/pip/issues/4022 , đây là lỗi do Ubuntu cung cấp siêu dữ liệu không chính xác cho pip. Vì vậy, dường như không có lý do chính đáng cho hành vi này. Tôi đã gửi một lỗi tiếp theo với Ubuntu. https://bugs.launchpad.net/ubfox/+source/python-pip/+orms/1635463

Để sao lưu câu trả lời trước đó, sẽ an toàn khi xóa dòng đó khỏi tệp.txt.txt của bạn. Dưới đây là một ví dụ Tạo tập thơ làm đóng băng an toàn danh sách gói của bạn (thả Makefile của bạn và chạy với make freeze):

freeze:
    pip freeze | grep -v "pkg-resources" > requirements.txt

9
Đó không phải là lỗi cụ thể của Ubuntu, debian có cùng một vấn đề
sứa

1
Lúc đầu, ý tưởng @MohammedShareefC có vẻ hiệu quả, nhưng sau đó tôi đã nhận được AttributeError: module 'pkg_resources' has no attribute 'iter_entry_points', vì vậy tôi nghĩ tốt nhất chỉ nên xóa nó khỏirequirements.txt
arod

2
vẫn gây đau đầu khi cố gắng triển khai lên heroku
Martins

3
Điều này dường như vẫn còn là một vấn đề với Ubuntu 18.04
Carmine Tambascia

3
Vẫn còn một vấn đề với Python 3.8 trên Ubuntu 19.04
eric.frederich

13

Về phần câu hỏi của bạn " có ổn không khi xóa dòng này? ":

Tôi có cùng một vấn đề ở đây khi phát triển trên Ubuntu 16.04 với chính yêu cầu đó. Khi triển khai trên một "pip install -r requirements.txt"pip chạy debian 8,5 phàn nàn rằng tài nguyên pkg là "không tìm thấy" nhưng có một gói toàn cầu được cài đặt "python-pkg-resource" nên sự phụ thuộc phải được thỏa mãn. Tương tự trên Ubuntu: Gói cũng tồn tại ở đó.

Như đã nêu ở đây, nó dường như là một số "gói cài đặt ngầm".

Vì vậy: Nếu bạn đang sử dụng Debian / Ubuntu có tài nguyên python-pkg được cài đặt thì sẽ an toàn để xóa dòng đó . Tôi đã làm như vậy và mọi thứ đang chạy tốt. Tuy nhiên vì tôi không phải là chuyên gia về vấn đề này, bạn nên nhớ rằng điều này có thể dẫn đến các biến chứng khi triển khai trên một máy khác.


Cảm ơn bạn về thông tin. Cuối cùng tôi cũng đã gỡ bỏ nó và cũng không thấy bất kỳ hậu quả nào, nhưng tất cả các cảnh báo mà bạn đề cập đều áp dụng. Nơi bạn cài đặt đến / từ một virtualenvlà tốt?
elethan

Có, tôi đã thử cài đặt từ bên trong một virtualenv. Vì gói toàn hệ thống có mặt và tôi không muốn làm hỏng mọi thứ nên tôi đã không thử cài đặt trên mỗi pip trên toàn hệ thống.
karlsebal

1

đã tìm thấy câu trả lời này trong liên kết này: https://bugs.launchpad.net/ubfox/+source/python-pip/+orms/1635463

bởi: Louis Bouchard (louis) đã viết vào 2019-11-16:

Nó làm việc cho tôi. Nhưng tôi không phải là một chuyên gia vì vậy, nếu ai đó đánh giá nó tốt hơn, sẽ rất tuyệt nếu được giải thích.

Xin chào,

đối với giá trị của nó, vấn đề xuất phát từ phiên bản ảo hóa đã sử dụng phiên bản gỡ lỗi của pkg_resource được thêm vào virtualenv tại thời điểm tạo:

$ virtualenv .
Running virtualenv with interpreter /usr/bin/python2
New python executable in /home/caribou/git/quividi/test/bin/python2
Also creating executable in /home/caribou/git/quividi/test/bin/python
Installing setuptools, pkg_resources, pip, wheel...done.
$ pip freeze
pkg-resources==0.0.0

Sử dụng phiên bản cài đặt pip của virtualenv có thể là một cách giải quyết khả thi:

$ sudo apt -y purge python3-virtualenv virtualenv tox
$ pip install virtualenv
$ virtualenv .
pip install virtualenv
Collecting virtualenv
  Downloading https://files.pythonhosted.org/packages/c5/97/00dd42a0fc41e9016b23f07ec7f657f636cb672fad9cf72b80f8f65c6a46/virtualenv-16.7.7-py2.py3-none-any.whl (3.4MB)
    100% |████████████████████████████████| 3.4MB 351kB/s
Installing collected packages: virtualenv
Successfully installed virtualenv-16.7.7
$ virtualenv .
New python executable in /home/caribou/git/quividi/test/bin/python
Installing setuptools, pip, wheel...
done.
$ source bin/activate
$ pip freeze
$

hth, ... Louis


-2

Trên Ubuntu, bạn có thể khắc phục điều này bằng cách xóa virtualenvgói Ubuntu và cài đặt phiên bản mới từ pip:

sudo apt remove virtualenv
sudo pip install -U virtualenv
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.