Jak używać pliku Requirements.txt do zainstalowania wszystkich zależności w projekcie w języku Python

86

Jestem nowy w Pythonie. Niedawno dostałem projekt napisany przez Pythona i wymaga on instalacji. Uruchomiłem poniższe polecenie, aby zainstalować, ale pojawił się błąd.

# pip install requirements.txt 
Collecting requirements.txt
  Could not find a version that satisfies the requirement requirements.txt (from versions: )
No matching distribution found for requirements.txt

Szukałem w google i znalazłem ten link, http://stackoverflow.com/questions/28167987/python-pip-trouble-installing-from-requirements-txtale nie bardzo rozumiem, jakie rozwiązanie jest w tym poście.

Poniżej znajduje się mój plik Requirements.txt:

# cat requirements.txt 
ordereddict==1.1
argparse==1.2.1
python-dateutil==2.2
matplotlib==1.3.1
nose==1.3.0
numpy==1.8.0
pymongo==3.3.0
psutil>=2.0

Czy istnieje łatwy sposób na zainstalowanie wszystkich wymaganych zależności w tym projekcie w języku Python?

EDYCJA1

Poniżej znajduje się wynik z pip3 install -r requirements.txt.

# pip3 install -r requirements.txt 
Requirement already satisfied: ordereddict==1.1 in /usr/local/lib/python3.5/dist-packages (from -r requirements.txt (line 1))
Collecting argparse==1.2.1 (from -r requirements.txt (line 2))
  Using cached argparse-1.2.1.tar.gz
Collecting python-dateutil==2.2 (from -r requirements.txt (line 3))
  Using cached python-dateutil-2.2.tar.gz
Collecting matplotlib==1.3.1 (from -r requirements.txt (line 4))
  Using cached matplotlib-1.3.1.tar.gz
    Complete output from command python setup.py egg_info:
    ============================================================================
    Edit setup.cfg to change the build options

    BUILDING MATPLOTLIB
                matplotlib: yes [1.3.1]
                    python: yes [3.5.2 (default, Nov 17 2016, 17:05:23)  [GCC
                            5.4.0 20160609]]
                  platform: yes [linux]

    REQUIRED DEPENDENCIES AND EXTENSIONS
                     numpy: yes [version 1.11.3]
                  dateutil: yes [using dateutil version 2.6.0]
                   tornado: yes [tornado was not found. It is required for the
                            WebAgg backend. pip/easy_install may attempt to
                            install it after matplotlib.]
                 pyparsing: yes [using pyparsing version 2.1.10]
                     pycxx: yes [Official versions of PyCXX are not compatible
                            with Python 3.x.  Using local copy]
                    libagg: yes [pkg-config information for 'libagg' could not
                            be found. Using local copy.]
                  freetype: no  [The C/C++ header for freetype2 (ft2build.h)
                            could not be found.  You may need to install the
                            development package.]
                       png: yes [pkg-config information for 'libpng' could not
                            be found. Using unknown version.]

    OPTIONAL SUBPACKAGES
               sample_data: yes [installing]
                  toolkits: yes [installing]
                     tests: yes [using nose version 1.3.7]

    OPTIONAL BACKEND EXTENSIONS
                    macosx: no  [Mac OS-X only]
                    qt4agg: no  [PyQt4 not found]
                   gtk3agg: no  [gtk3agg backend does not work on Python 3]
                 gtk3cairo: no  [Requires cairo to be installed.]
                    gtkagg: no  [Requires pygtk]
                     tkagg: no  [TKAgg requires Tkinter.]
                     wxagg: no  [requires wxPython]
                       gtk: no  [Requires pygtk]
                       agg: yes [installing]
                     cairo: no  [cairo not found]
                 windowing: no  [Microsoft Windows only]

    OPTIONAL LATEX DEPENDENCIES
                    dvipng: no
               ghostscript: no
                     latex: no
                   pdftops: no

    ============================================================================
                            * The following required packages can not be built:
                            * freetype

    ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-don4ne_2/matplotlib/

Mam już zainstalowane, libfreetype6-devale polecenie pip nadal zgłasza brak tej zależności.

# apt-get install libfreetype6-dev
Reading package lists... Done
Building dependency tree       
Reading state information... Done
libfreetype6-dev is already the newest version (2.6.1-0.1ubuntu2).
0 upgraded, 0 newly installed, 0 to remove and 4 not upgraded.
Joey Yi Zhao
źródło
25
pip install -r requirements.txt
MrLeeh,
1
Zaktualizowałem dane wyjściowe, aby zawierały dane wyjściowe z flagą -r, ale nadal nie mogę zainstalować.
Joey Yi Zhao
więc teraz przeczytaj nowe wyjście i pomyśl - nie czekaj na nas.
furas
na wyjściu widzisz, że potrzebuje freetype. To nie jest moduł Pythona, ale pakiet systemowy. Musisz go zainstalować za pomocą np. apt-getonUbuntu/Mint
furas
Dlaczego, -rbo to nie ma nic wspólnego z file??
Sören

Odpowiedzi:

65

Jeśli używasz systemu operacyjnego Linux:

  1. Usuń matplotlib==1.3.1zrequirements.txt
  2. Spróbuj zainstalować z sudo apt-get install python-matplotlib
  3. Uruchom pip install -r requirements.txt(Python 2) lub pip3 install -r requirements.txt(Python 3)
  4. pip freeze > requirements.txt

Jeśli używasz systemu operacyjnego Windows:

  1. python -m pip install -U pip setuptools
  2. python -m pip install matplotlib
Nilesh Pansuriya
źródło
9
Cześć Nilesh, witamy w Stack Overflow. W przyszłości prosimy o wyjaśnienie, co robią polecenia, które podajesz w swojej odpowiedzi, a nie tylko mów ludziom, aby uruchamiali polecenia.
yakatz
Dzięki @Nilesh. Czy chodziło Ci o umieszczenie 4. przed 3.?
Anupam
Nie @Anupam, Tak jak w kroku 1, usunęliśmy "matplotlib" z Requirements.txt, w kroku 4 aktualizujemy Requirements.txt o nowo zainstalowany pakiet do wykorzystania w przyszłości. Krok 3 służy do instalowania innych wymagań z pliku.
Nilesh Pansuriya
40

pip install -r requirements.txt dla python 2.x

pip3 install -r requirements.txtdla python 3.x(w przypadku zainstalowania wielu wersji)

Krishna Kishore Andhavarapu
źródło
Próbowałem obu, ale nadal nie udało mi się. Opublikowałem dane wyjściowe z tego polecenia.
Joey Yi Zhao
1
Myślę, że brakuje wymaganej zależności „freetype” do zainstalowania MATPLOTLIB. Spróbuj zainstalować zależność i ponownie uruchom pip install -r Requirements.txt.
Joshi Sravan Kumar
pipnie obsługuje zależności na poziomie systemu. Musisz to zrobić, apt-get install libfreetype6-devzanim przejdziesz dalej. (To nawet mówi o tym bezpośrednio w twoich wynikach. Spróbuj przejrzeć go pod kątem takich błędów następnym razem, zwykle wyniki kompilacji są bardzo szczegółowe)
FMaz
3

(Zaczerpnięte z mojego komentarza)

pipnie obsługuje zależności na poziomie systemu. Musisz to zrobić, apt-get install libfreetype6-devzanim przejdziesz dalej. (Jest to nawet napisane bezpośrednio w wynikach. Następnym razem spróbuj przejrzeć go pod kątem takich błędów, zwykle wyniki kompilacji są bardzo szczegółowe)

FMaz
źródło
Zainstalowałem już libfreetype6-dev. Ale pip nadal zgłasza ten błąd.
Joey Yi Zhao
Widziałeś ten błąd? github.com/matplotlib/matplotlib/issues/3029
FMaz
3

Python 3:

pip3 install -r requirements.txt

Python 2:

pip install -r requirements.txt

Aby uzyskać wszystkie zależności dla środowiska wirtualnego lub dla całego systemu:

pip freeze

Aby przekazać wszystkie zależności do pliku Requirements.txt (Linux):

pip freeze > requirements.txt
tri.akki7
źródło