Ich dachte darüber nach, einfach mit Python zu kratzen und entschied mich für Scrapy, aber welches sollte ich verwenden, um Python überhaupt einzurichten? Ich war besorgt darüber und Scrapy funktionierte nicht richtig, so dass ich in einigen Fällen stecken blieb, also schreibe ich ein Memo darüber, wie man es löst.
Das Python-Paket und die Umgebung enthalten verschiedene Tools, und ich frage mich, welches ich verwenden soll. Ich habe die folgende Umgebung gewählt, weil ich die Umgebung einfach mit so wenig Werkzeugen wie möglich einstellen möchte.
pyenv + anaconda
Verwenden Sie pyenv für die Python-Versionskontrolle und conda, ein Anaconda-Tool, für die Verwaltung von Paketen und virtuellen Umgebungen. Die folgenden Artikel waren für diese Auswahl sehr hilfreich.
Aufbau einer Python-Umgebung für diejenigen, die Datenwissenschaftler 2016 werden möchten
Derzeit verwende ich Mac nur für die Entwicklung, daher ist dieser Artikel nur für Mac (OSX).
Der Mac wird standardmäßig mit Python 2.x geliefert, aber es scheint, dass die Aktualisierung passt. Lassen Sie also das System-Python unverändert und installieren Sie das Python, das Sie separat mit pyenv verwenden möchten. Es ist auch unwahrscheinlich, dass Sie die verschiedenen Python-Bibliotheken selten verwenden. Daher ist es praktisch, Anaconda zu verwenden, ein Paket aller wichtigen Bibliotheken. Wenn die Anakonda zu groß ist, gibt es auch eine minimale Minikonda.
Es wird gesagt, dass die Installation von Anaconda direkt auf dem Mac mit Homebrew in Konflikt steht (siehe obigen Artikel). Daher ist es besser, Pyenv zu verwenden, und verschiedene andere Pakete als Anaconda können problemlos verwendet werden.
Verwenden Sie zuerst Homebrew, um Pyenv zu installieren.
$ brew install pyenv
$ echo 'export PYENV_ROOT="${HOME}/.pyenv"' >> ~/.bash_profile
$ echo 'export PATH="${PYENV_ROOT}/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(pyenv init -)"' >> ~/.bash_profile
$ exec $SHELL -l
Die Pakete, die mit pyenv installiert werden können
$ pyenv install -l
Sie können es bei sehen. Für Anaconda sind derzeit die neuesten Versionen von Python2 und Python3 verfügbar
anaconda2-4.3.0
anaconda3-4.3.0
Es ist geworden. Installieren Sie hier anaconda3-4.3.0.
$ pyenv install anaconda3-4.3.0
Die Installation dauert sehr lange. Machen Sie daher bitte eine Kaffeepause.
Mit dem obigen Befehl allein können Sie die installierte Python (Anaconda) nicht verwenden. Um es systemweit nutzen zu können
$ pyenv global anaconda3-4.3.0
Wird besorgt. Sie können die aktuellen Einstellungen mit dem folgenden Befehl überprüfen.
$ pyenv version
anaconda3-4.3.0 (set by /Users/tetsuo/.pyenv/version)
Sie können auch die Python-Pakete (verwaltet von pyenv) sehen, die auf Ihren Mac heruntergeladen wurden.
$ pyenv versions
system
3.6.0
* anaconda3-4.3.0 (set by /Users/tetsuo/.pyenv/version)
Wird besorgt. Wenn Sie Python in diesem Zustand starten,
$ python
Python 3.6.0 |Anaconda 4.3.0 (x86_64)| (default, Dec 23 2016, 13:19:00)
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.57)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>
Und Sie können sehen, dass Python3 des Anaconda-Pakets funktioniert.
Sie können die Liste der von Anaconda installierten Bibliotheken mit dem folgenden Befehl anzeigen.
$ conda list
# packages in environment at /Users/tetsuo/.pyenv/versions/anaconda3-4.3.0:
#
_license 1.1 py36_1
alabaster 0.7.9 py36_0
anaconda 4.3.0 np111py36_0
anaconda-client 1.6.0 py36_0
anaconda-navigator 1.4.3 py36_0
appnope 0.1.0 py36_0
|
Leider ist Scrapy nicht installiert, installieren Sie es also separat. Scrapy-Installation Normalerweise wird pip verwendet, aber da ich es mit conda verwalten möchte, installiere ich es mit conda anstelle von pip. Überprüfen Sie zunächst, ob die Konda kratzig ist.
$ conda search scrapy
Fetching package metadata .........
scrapy 0.16.4 py26_0 defaults
0.16.4 py27_0 defaults
0.24.4 py27_0 defaults
1.0.1 py27_0 defaults
1.0.3 py27_0 defaults
1.1.1 py27_0 defaults
1.1.1 py34_0 defaults
1.1.1 py35_0 defaults
1.1.1 py36_0 defaults
Da Scrapy auch registriert ist, können Sie es mit conda installieren. Wenn Sie jedoch die neueste Version von Scrapy installieren, wird auch die neueste Version der intern verwendeten verdrehten Bibliothek installiert. Aber ein Scrapy Bug? Wenn Sie also beim Scraping Twisted nach Version 16.6 verwenden
TypeError: 'float' object is not iterable
Und stoppen.
Referenz TypeError: 'float'-Objekt ist nicht iterierbar (auf Twisted dev + Scrapy dev)
Daher geben Sie bei der Installation von Scrapy auch die verdrehte Version an (Sie können auch herausfinden, welche verdrehte Version Sie mit `conda search twisted
`verwenden können).
$ conda install scrapy twisted=16.6.0
Sie haben jetzt auch Scrapy installiert.
$ scrapy version
Scrapy 1.1.1
Jetzt haben Sie eine Umgebung, in der Python und Scrapy nur mit Pyenv und Anaconda verwendet werden. Wenn ich ab und zu Python verwende, kann ich mich nicht erinnern, wie viele Tools verwendet werden, und es braucht Zeit, um sich an die Umgebung zu erinnern. Darüber hinaus sind globale Systemeinstellungen erforderlich, um die Unterstützungsfunktionen von Programmen wie z. B. Linter im Editor verwenden zu können. Deshalb suchte ich nach einer Methode, die mit so wenig Tools wie möglich einfach erstellt werden kann, und erstellte eine Umgebung, die mit nur zwei Tools, pyenv und conda, alles von der Python-Versionsverwaltung bis hin zu virtuellen Umgebungen abwickelt. Jetzt funktioniert die Support-Funktion des Editors problemlos.
Bei Verwendung der virtuellen Umgebung von conda tritt jedoch das Problem auf, dass der Aktivierungsbefehl mit pyenv in Konflikt steht und nicht funktioniert. Dies ist auch leicht zu lösen, daher bin ich vorerst mit dieser Umgebung zufrieden. Referenz 3 Arten von Problemumgehungen zur Aktivierung des Kollisionsproblems bei gleichzeitiger Existenz von Pyenv und Anaconda
Recommended Posts