python - pybook - পাইথন প্রোগ্রামিং



কিভাবে আমি স্থানীয়ভাবে ইনস্টল করা পাইথন মডিউলগুলির একটি তালিকা পেতে পারি? (15)

সমাধান

একটি পাইথন স্ক্রিপ্ট থেকে একটি pip freeze অনুরূপ তালিকা পাওয়ার জন্য আমার 50 সেন্ট:

import pip
installed_packages = pip.get_installed_distributions()
installed_packages_list = sorted(["%s==%s" % (i.key, i.version)
     for i in installed_packages])
print(installed_packages_list)

একটি (খুব দীর্ঘ) এক মাছ ধরার নৌকা হিসাবে:

sorted(["%s==%s" % (i.key, i.version) for i in pip.get_installed_distributions()])

প্রদান:

['behave==1.2.4', 'enum34==1.0', 'flask==0.10.1', 'itsdangerous==0.24', 
 'jinja2==2.7.2', 'jsonschema==2.3.0', 'markupsafe==0.23', 'nose==1.3.3', 
 'parse-type==0.3.4', 'parse==1.6.4', 'prettytable==0.7.2', 'requests==2.3.0',
 'six==1.6.1', 'vioozer-metadata==0.1', 'vioozer-users-server==0.1', 
 'werkzeug==0.9.4']

ব্যাপ্তি

এই সমাধানটি সিস্টেমের সুযোগ বা একটি ভার্চুয়াল পরিবেশের সুযোগে প্রযোজ্য এবং setuptools , setuptools এবং ইনস্টল করা setuptools ইনস্টল করা প্যাকেজগুলিকে কভার করে।

আমার ব্যবহার ক্ষেত্রে

আমি আমার ফ্লাস সার্ভারে এই কলটির ফলাফল যোগ করেছি, তাই যখন আমি http://example.com/exampleServer/environment দিয়ে কল করি তখন সার্ভারের ভার্চুয়ালভ্যানে ইনস্টল করা প্যাকেজগুলির তালিকাটি পেয়েছি। এটি একটি সম্পূর্ণ অনেক সহজ ডিবাগিং করে তোলে।

আদেশ সহকারে

আমি এই কৌশলটির একটি অদ্ভুত আচরণ লক্ষ্য করেছি - যখন পাইথন ইন্টারপ্রেটারটি setup.py ফাইলের মতো একই ডিরেক্টরিতে আহ্বান করা হয়, তখন এটি setup.py দ্বারা ইনস্টল করা প্যাকেজটি setup.py

ধাপ পুনর্গঠন কর:

একটি ভার্চুয়াল পরিবেশ তৈরি করুন
$ cd /tmp
$ virtualenv test_env
New python executable in test_env/bin/python
Installing setuptools, pip...done.
$ source test_env/bin/activate
(test_env) $ 
setup.py সাথে একটি গিট রেপো ক্লোন করুন
(test_env) $ git clone https://github.com/behave/behave.git
Cloning into 'behave'...
remote: Reusing existing pack: 4350, done.
remote: Total 4350 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (4350/4350), 1.85 MiB | 418.00 KiB/s, done.
Resolving deltas: 100% (2388/2388), done.
Checking connectivity... done.

আমরা /tmp/behave setup.py /tmp/behave মধ্যে setup.py /tmp/behave :

(test_env) $ ls /tmp/behave/setup.py
/tmp/behave/setup.py
গিট রেপো থেকে পাইথন প্যাকেজটি ইনস্টল করুন
(test_env) $ cd /tmp/behave && python setup.py install
running install
...
Installed /private/tmp/test_env/lib/python2.7/site-packages/enum34-1.0-py2.7.egg
Finished processing dependencies for behave==1.2.5a1

আমরা /tmp থেকে উপরোক্ত সমাধান চালানো হলে

>>> import pip
>>> sorted(["%s==%s" % (i.key, i.version) for i in pip.get_installed_distributions()])
['behave==1.2.5a1', 'enum34==1.0', 'parse-type==0.3.4', 'parse==1.6.4', 'six==1.6.1']
>>> import os
>>> os.getcwd()
'/private/tmp'

আমরা /tmp/behave থেকে উপরোক্ত সমাধান চালানো

>>> import pip
>>> sorted(["%s==%s" % (i.key, i.version) for i in pip.get_installed_distributions()])
['enum34==1.0', 'parse-type==0.3.4', 'parse==1.6.4', 'six==1.6.1']
>>> import os
>>> os.getcwd()
'/private/tmp/behave'

behave==1.2.5a1 দ্বিতীয় উদাহরণ থেকে অনুপস্থিত, কারণ ওয়ার্কিং ডিরেক্টরিটিতে behave setup.py ফাইল রয়েছে।

আমি ডকুমেন্টেশন এই সমস্যা কোন রেফারেন্স খুঁজে পাওয়া যায়নি। সম্ভবত আমি এটি জন্য একটি বাগ খুলতে হবে।

আমি পাইথন মডিউলগুলির একটি তালিকা পেতে চাই, যা আমার পাইথন ইনস্টলেশন (ইউনিক্স সার্ভার) -এ রয়েছে।

কিভাবে আপনি আপনার কম্পিউটারে ইনস্টল পাইথন মডিউল তালিকা পেতে পারেন?


Answer #1

আপনি পাইথন 3 ব্যবহার করা হয়

আমি শুধু উবুন্টুতে চেষ্টা করেছি, এবং মনে হচ্ছে এটি কাজ করেছে

ডেবিয়ান / উবুন্টু: sudo apt-get install python3-matplotlib

ফেডোরা: sudo dnf install python3-matplotlib

Red Hat: sudo yum install python3-matplotlib

আর্কি: sudo pacman -S python-matplotlib

উত্স: https://matplotlib.org/users/installing.html


Answer #2

অনেক ধারনা আছে, প্রাথমিকভাবে আমি এই দুটি বিষয়ে চিন্তা করছি:

বীচি

cons: সবসময় ইনস্টল করা হয় না

সাহায্য ( 'মডিউল')

cons: আউটপুট আউটপুট; ভাঙ্গা মডিউল সঙ্গে (দেখুন উবুন্টু ...) segfault করতে পারেন

আমি একটি সহজ পদ্ধতির প্রয়োজন, মৌলিক লাইব্রেরি ব্যবহার করে এবং পুরাতন Python 2.x সঙ্গে সামঞ্জস্যপূর্ণ

এবং আমি হালকা দেখতে: listmodules.py

2.5 এ ডকুমেন্টেশন উৎস ডিরেক্টরি লুকানো একটি ছোট স্ক্রিপ্ট যা পাইথন ইনস্টলেশনের জন্য উপলব্ধ সমস্ত মডিউল তালিকাভুক্ত করে।

পেশাদাররা:

শুধুমাত্র imp, sys, os, re, সময় ব্যবহার করে

পাইথন 1.5.2 এবং নতুন চালানোর জন্য ডিজাইন করা হয়েছে

সোর্স কোডটি আসলে কম্প্যাক্ট, তাই আপনি এটির সাথে সহজে টিকঙ্কার করতে পারেন, উদাহরণস্বরূপ বাগিবি মডিউলগুলির ব্যতিক্রম তালিকাটি পাস করতে (তাদের আমদানি করার চেষ্টা করবেন না)


Answer #3

আমি ওএস এক্স-এ একটি কাস্টম ইনস্টল পাইথন 2.7 এ দৌড়ে গিয়েছিলাম। এটি X11 এর জন্য মডিউলগুলির তালিকা তালিকাভুক্ত করতে হবে (সাহায্য এবং পাইডক ব্যবহার করে উভয়ই)।

X11 ইনস্টল না করে সমস্ত মডিউল তালিকাভুক্ত করতে সক্ষম হবার জন্য আমি পি-পডকে http-সার্ভার হিসাবে পেলাম, অর্থাৎ:

pydoc -p 12345

তারপরে সফরীটিকে http://localhost:12345/ সমস্ত মডিউল দেখতে নির্দেশ দেওয়া সম্ভব।


Answer #4

আমি সাধারণত প্যাকেজের তালিকা পেতে (সংস্করণ সহ) pip list ব্যবহার করি।

এটি অবশ্যই একটি ভার্চুয়াল পরিবেশেও কাজ করে।


Answer #5

উইন্ডোজ এ, cmd এ এন্টার করুন

c:\python\libs>python -m pip freeze

Answer #6

এখন, আমি এই পদ্ধতিগুলি নিজেরাই চেষ্টা করেছি, এবং আমি ঠিক যা পেয়েছি তা পেয়েছি: সমস্ত মডিউল।

আচ্ছা, সত্যিই আপনি stdlib সম্পর্কে খুব বেশি যত্ন নেন না, আপনি একটি পাইথন ইনস্টলেশনের সাথে কী পাবেন তা আপনি জানেন।

সত্যিই, আমি ইনস্টল করেছি যে উপাদান চান।

কি আসলে, বিস্ময়করভাবে, ঠিক সূক্ষ্ম কাজ ছিল:

pip freeze

যা ফিরে এসেছে:

Fabric==0.9.3
apache-libcloud==0.4.0
bzr==2.3b4
distribute==0.6.14
docutils==0.7
greenlet==0.3.1
ipython==0.10.1
iterpipes==0.4
libxml2-python==2.6.21

আমি "বিস্ময়করভাবে" বলি কারণ প্যাকেজ ইন্সটল টুলটি হল এই কার্যকারিতাটি সন্ধান করার জন্য সঠিক জায়গা, যদিও এটি 'ফ্রীজ' নামের অধীনে নয় তবে পাইথন প্যাকেজিং এত অদ্ভুত, যে আমি এই টুলটি বুঝতে পেরেছি। পিপ 0.8.2, পাইথন 2.7।


Answer #7

এটি আদম মাতান এর উত্তর (গ্রহণযোগ্য এক) দ্বারা অনুপ্রাণিত হয়েছিল:

import tabulate
try:
  from pip import get_installed_distributions
except:
  from pip._internal.utils.misc import get_installed_distributions

tabpackages = []
for _, package in sorted([('%s %s' % (i.location, i.key), i) for i in get_installed_distributions()]):
  tabpackages.append([package.location, package.key, package.version])

print(tabulate.tabulate(tabpackages))

যা তারপর ফর্ম একটি টেবিল প্রিন্ট আউট

19:33 [email protected]-v3 [iot-wifi-2] ~/python$ python installed_packages.py
-------------------------------------------  --------------  ------
/home/pi/.local/lib/python2.7/site-packages  enum-compat     0.0.2
/home/pi/.local/lib/python2.7/site-packages  enum34          1.1.6
/home/pi/.local/lib/python2.7/site-packages  pexpect         4.2.1
/home/pi/.local/lib/python2.7/site-packages  ptyprocess      0.5.2
/home/pi/.local/lib/python2.7/site-packages  pygatt          3.2.0
/home/pi/.local/lib/python2.7/site-packages  pyserial        3.4
/usr/local/lib/python2.7/dist-packages       bluepy          1.1.1
/usr/local/lib/python2.7/dist-packages       click           6.7
/usr/local/lib/python2.7/dist-packages       click-datetime  0.2
/usr/local/lib/python2.7/dist-packages       construct       2.8.21
/usr/local/lib/python2.7/dist-packages       pyaudio         0.2.11
/usr/local/lib/python2.7/dist-packages       tabulate        0.8.2
-------------------------------------------  --------------  ------

যার সাহায্যে আপনি সহজে কোন প্যাকেজটি ইনস্টল করেন এবং sudo সাথে ইনস্টল করেন।

একটি নোট সরাইয়া: আমি লক্ষ্য করেছি যে একবার যখন আমি sudo মাধ্যমে একবার একটি প্যাকেট ইনস্টল করি এবং একবার ছাড়াই, একটিকে অগ্রাধিকার দেওয়া হয় যাতে অন্যটি তালিকাভুক্ত না হয় (শুধুমাত্র একটি অবস্থান দেখানো হয়)। আমি বিশ্বাস করি যে শুধুমাত্র স্থানীয় ডিরেক্টরির মধ্যে একটি তালিকাভুক্ত করা হয়। এই উন্নত করা যেতে পারে।


Answer #8

পিপ 10 হিসাবে, গ্রহণযোগ্য উত্তর আর কাজ করবে না। ডেভেলপমেন্ট টিম get_installed_distributions রুটিন অ্যাক্সেস সরিয়ে ফেলেছে। একই জিনিস করার জন্য setuptools মধ্যে একটি বিকল্প ফাংশন আছে। এখানে একটি বিকল্প সংস্করণ যা পিপ 10 দিয়ে কাজ করে:

import pkg_resources
installed_packages = pkg_resources.working_set
installed_packages_list = sorted(["%s==%s" % (i.key, i.version)
     for i in installed_packages])
print(installed_packages_list)

এটা পিপ এর পূর্ববর্তী সংস্করণে কাজ করবে বা কাজ করবে না দয়া করে আমাকে জানান।


Answer #9

পিপ সংস্করণ 1.3 থেকে, আপনি অ্যাক্সেস পেয়েছেন:

pip list

যা "পিপ ফ্রিজ" এর জন্য সিনট্যাক্টিক চিনি বলে মনে হয়। এটি আপনার সংস্করণ সংখ্যার সাথে আপনার ইনস্টলেশন বা ভার্চুয়ালেনের সমস্ত মডিউলগুলি তালিকাবদ্ধ করবে। দুর্ভাগ্যবশত এটি কোনও মডিউলটির বর্তমান সংস্করণ নম্বরটি প্রদর্শন করে না, না এটি আপনার পাত্রগুলি ধৌত করে বা আপনার জুতাগুলি উজ্জ্বল করে।


Answer #10

শেল থেকে

ls site-packages

এটি সহায়ক না হলে, আপনি এটি করতে পারেন।

import sys
import os
for p in sys.path:
    print os.listdir( p )

এবং যে উত্পাদন করে দেখুন।


Answer #11

স্বাভাবিক শেল শুধু ব্যবহার করুন

pydoc modules

Answer #12

pip freeze ব্যবহার করার পাশাপাশি আমি আমার ভার্চুয়াল পরিবেশে yolk ইনস্টল করছি।


Answer #13

পিপ ফ্রিজে এটি সমস্ত প্যাকেজ খুঁজে পায় তবে পাইথন প্যাকেজগুলির সমস্ত পাথ তালিকাবদ্ধ করার জন্য কেবল নিম্নলিখিত কমান্ডটি লিখতে পারে।

>>> import site; site.getsitepackages()
['/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages']

Answer #14
  • ipython ইন আপনি " import ট্যাব " টাইপ করতে পারেন।

  • স্ট্যান্ডার্ড পাইথন ইন্টারপ্রেটারে, আপনি " help('modules') টাইপ করতে পারেন"।

  • কমান্ড লাইন এ, আপনি pydoc modules ব্যবহার করতে পারেন।

  • একটি স্ক্রিপ্টে, pkgutil.iter_modules() কল করুন।





pip