How to automatically install required packages from a python script as necessary?

假如想象 提交于 2020-01-12 10:09:08

问题


Is there anything in python or linux what basically instructs the system to "install whatever is necessary". Basically I find it annoying to install python packages for each new script/system/server that I work on. Each time I end up doing a sudo pip or an apt-get or dnf anyway. Why not automate that within the script itself. Whereever a 'no package found' error crops up, pass the library name to the install statement. Is this there ?

PS: I know docker exists, but am talking at a python/script level or a direct system level for purely execution purposes.

Thanks


回答1:


The best way I know is, create a file requirements.txt list out all the packages name in it and install it using pip

pip install -r requirements.txt

Example requirements.txt:

BeautifulSoup==3.2.0
Django==1.3
Fabric==1.2.0
Jinja2==2.5.5
PyYAML==3.09
Pygments==1.4
SQLAlchemy==0.7.1
South==0.7.3
amqplib==0.6.1
anyjson==0.3
...



回答2:


You can use setuptools to install dependencies automatically when you install your custom project on a new machine. Requirements file works just fine if all you want to do is to install a few PyPI packages.

Here is a nice comparison between the two. From the same link you can see that if your project has two dependent packages A and B, all you have to include in your setp.py file is a line

install_requires=[
   'A',
   'B'
] 

Of course, setuptools can do much more. You can include setups for external libraries (say C files), non PyPI dependencies, etc. The documentation gives a detailed overview on installing dependencies. There is also a really good tutorial on getting started with python packaging.

From their example, a typical setup.py file would look like this.

from setuptools import setup

setup(name='funniest',
      version='0.1',
      description='The funniest joke in the world',
      url='http://github.com/storborg/funniest',
      author='Flying Circus',
      author_email='flyingcircus@example.com',
      license='MIT',
      packages=['funniest'],
      install_requires=[
          'markdown',
      ],
      zip_safe=False)

In conclusion, it is so simple to get started with setuptools. This package can make it fairly easy to migrate your code to a new machine.




回答3:


pip3 install pipreqs

pip3 install -U --user pipreqs

mv requirements.txt  requirements.txt.orig
pipreqs --force ./

and

cat requirements.txt

Keras==2.2.4 
scipy==1.3.0 
numba==0.44.1 
imgaug==0.2.9 
opencv_python==4.1.0.25

BUT, some modules needs binary compilation (where you don't have libraries) and some could be installed by system package manager with different names.



来源:https://stackoverflow.com/questions/46419607/how-to-automatically-install-required-packages-from-a-python-script-as-necessary

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!