Scrapy installieren

Probleme bei der Installation?
Antworten
epicpython
User
Beiträge: 20
Registriert: Montag 1. Oktober 2018, 12:35

Hey Leute, ich habe mir für heute vorgenommen ein Programm zu schreiben. Im ersten Schritt versuche ich mich an einem Webcrawler. Nun habe ich es nach einigem Lernen geschafft Scrapy über die PowerShell zu installieren. Allerdings habe ich hierbei zuvor kein "virtualenw" innerhalb des Ordners kreiert. Dies könnte laut dem offiziellen Anweisungen der Entwickler Interferenzen mit Systemdateien hervorrufen.

Was habe ich zu befürchten und was sollte ich nun bestenfalls tun?
epicpython
User
Beiträge: 20
Registriert: Montag 1. Oktober 2018, 12:35

Ich habe ebenfalls Probleme "scrapy" über die Python 2.7 Command Line, cmd und PS aufzurufen.
Die Eingabe sämtlicher Befehle in Zusammenhang mit scrapy ergeben einen Error:
"scrapy is not defined"
Benutzeravatar
__blackjack__
User
Beiträge: 13004
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@epicpython: Da `scrapy` doch ein paar Abhängigkeiten hat, kann es passieren das Du mit `scrapy` Bibliotheken installiert oder aktualisiert hast, die andere Python-Programme in einer anderen Version brauchen. Tun kann man da nicht mehr viel. Wenn es solche Probleme gibt, muss man mindestens entweder das andere Programm oder Deins in ein virtualenv/venv stecken und dann für das was weiterhin global installiert ist, die Bibliotheken entsprechend „downgraden“.

Zum zweiten Problem: Mindestens zwischen Python 2.7 Shell und den beiden Systemshells wird sich die Fehlermeldung unterscheiden. Und so wirklich 1:1 ist Deine Fehlermeldung nicht übernommen, sie sieht aber einem `NameError` in der Python-Shell sehr ähnlich:

Code: Alles auswählen

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'scrapy' is not defined
In der cmd.exe bekomme ich:

Code: Alles auswählen

Can't recognise 'scrapy' as an internal or external command, or batch script.
Und in der PowerShell:

Code: Alles auswählen

scrapy : The term 'scrapy' is not recognized as the name of a cmdlet, function, script file, or operable program.
Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:1
+ scrapy
+ ~~~~~~~
+ CategoryInfo          : ObjectNotFound: (scrapy:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
Und in allen Fällen sieht man nicht *was* ich da vorher eingegeben habe. Das kann aber auch wichtig sein. Also bitte immer die komplette Fehlermeldung zeigen und das was zu der Fehlermeldung geführt hat.

Unter Windows wird man wahrscheinlich die Endung *.py mit angeben müssen (es sei denn `pip` installiert da passende ”native” Wrapper-Skripte (ich nehme mal an Du hast `pip` verwendet, das hast Du ja auch nicht verraten)). Und diese Skripte müssen in einem Pfad liegen der in der Umgebungsvariable %PATH% vorhanden ist. Da müsstest Du also herausfinden wo das scrapy-Programm installiert wurde und ob dieser Pfad in %PATH% enthalten ist. Kenne mich da mit der Kombination `pip` und Windows nicht so aus.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
epicpython
User
Beiträge: 20
Registriert: Montag 1. Oktober 2018, 12:35

Die Umgebungsvariablen enthalten den Pfad der Installation von Scrapy nicht. Die Installation von Scrapy liegt laut der Powershell-Installationsinformationsausgabe im Ordner Python\Lib\site-packages\. An diesem Speicherort finde ich allerdings keine Dateien, die konkret auf Scrapy hinweisen. Enthalten sind hier:
__pycache__
pip
pip-10.0...
pkg_resources
setuptools
setuptools-39.0....
easy_install

Pip wurde wie erwartet von mir genutzt um die Installation durchzuführen.
Kann ich Scrapy nachträglich in eine virtualenw implementieren? Wenn ja, wo findet sich denn nun die Installation? Ich installiere derzeit Anaconda um nachzuschauen, ob es den Prozess vereinfacht, denn Visual Studio scheint hierfür ungeeignet.
Benutzeravatar
__blackjack__
User
Beiträge: 13004
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Programme sollten nach ``Python\Scripts`` installiert werden. Da liegen bei mir jedenfalls so Sachen wie pip.exe (womit geklärt wäre wie ``pip`` unter Windows Python-Programme installiert). Und das Verzeichnis ist mir auch vom Python 2.7-Installer schon in %PATH% aufgenommen worden.

Ich hatte gerade ein anderes Problem scrapy zu installieren, da schaue ich mal wenn ich das Windows mal wieder am laufen habe.

Linux würde den Prozess vereinfachen. ;-)
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
epicpython
User
Beiträge: 20
Registriert: Montag 1. Oktober 2018, 12:35

Das Problem habe ich erst kürzlich selbst auf diese Weise gelöst, indem ich "easy_install" verwendet habe, um pip und scrapy im Script-Verzeichnis zu installieren. Ich überlege derzeit bereits Linux zu installieren.
epicpython
User
Beiträge: 20
Registriert: Montag 1. Oktober 2018, 12:35

Im weiteren Verlauf meiner Vorbereitungen habe ich virtualenv und virtualenvwrapper installiert. Ich versuche nun herauszufinden, wie ich eine virtuelle Umgebung für eine Python-Installation erstelle und Python selbst in diese Umgebung inkludiere. Die Befehlsliste des "virtualenvwrapper" beinhaltet folgende Möglichkeit: "add2virtualenv: add directory to the import path". Der Versuch mit diesem Befehl einen leeren oder inexistenten (durch den Befehl selbst kreierten) Ordner zu der Umgebung hinzuzufügen schlägt fehl. Auch Python selbst kann nicht innerhalb dieser Umgebung verlagert werden, da Python in der "parent directory" der "virtualenv" ist. Wie gelange ich nun endlich zum gewünschten Ergebnis:
Python 2.7 soll sich innerhalb einer von virtualenv kreierten Umgebung befinden, von welcher aus ich einen Crawler entwickeln kann und keine Interferenzen mit anderen Systemdateien auftreten.
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

mkvirtualenv sollte schon vollkommen ausreichen. Dann bekommst du ein isoliertes Python in deinem virtualenv-Verzeichnis. Da musst du gar nichts mehr fuer tun, vor allem nicht wild Pfade hinzufuegen.
epicpython
User
Beiträge: 20
Registriert: Montag 1. Oktober 2018, 12:35

Das Problem hierbei ist folgendes:
Gebe ich lediglich mkvirtualenv ein, so werden mir verschiedene Befehle angezeigt, welche ich verwenden kann. Nutze ich daraufhin "mkvirtualenv DEST_DIR" erhalte ich zwei Fehler. Zum einen, dass python.exe und zum anderen, dass virtualenv entweder falsch geschrieben wurden oder nicht gefunden werden konnten.

Ich habe derzeit Python 2.7 sowie Python 3.7 installiert. Ist es möglicherweise notwendig in der Directory der Python.exe die Eingabeaufforderung zu starten?
Benutzeravatar
__blackjack__
User
Beiträge: 13004
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@epicpython: Dann sind beide nicht in %PATH% enthalten‽ Ich persönlich benutze ja mittlerweile `pipenv` um `pip` und `virtualenv` bzw. `venv` zu verwenden.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
epicpython
User
Beiträge: 20
Registriert: Montag 1. Oktober 2018, 12:35

Keine der beiden Python-Installationen ist in %PATH% enthalten. Füge ich diese hinzu, indem ich den übergeordneten Installationsordner oder die .exe angebe?
Benutzeravatar
__blackjack__
User
Beiträge: 13004
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@epicpython: Warum sind die nicht in %PATH% vorhanden? Soweit ich weiss muss man das zumindest bei Python 2.7 beim Installer aktiv abwählen.

Das Verzeichnis in die die Python.exe muss enthalten sein und das Scripts-Verzeichnis in diesem Verzeichnis. Und natürlich nur von *einer* Pythonversion. Welche hast Du denn da? Man würde da eher eine 3er in den %PATH% setzen und das dann so konfigurieren das die dortige ``py.exe`` auch die andere Installation kennt und entsprechend ausführen kann wenn die She-Bang-Zeile entsprechend aussieht.

Die Python-Dokumentation hat für das Ausführen von Programmen für die jeweiligen Betriebssysteme Abschnitte.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
epicpython
User
Beiträge: 20
Registriert: Montag 1. Oktober 2018, 12:35

Ich habe nun den Pfad der Python.exe (Version 3.x) angegeben. Wie genau "eine 3er in den %Path%" gesetzt wird, entzieht sich allerdings meiner Windows-Kenntnisse. Anleitungen hierzu gaben wenig Aufschluss. Kennen Python-Installationen einander automatisch, sobald diese in einer Umgebungsvariable angegeben wurden oder ist das ein zusätzlicher Schritt? Falls ja, dann habe ich zu diesem Schritt nichts gefunden. Ich bin mir ebenfalls unsicher, welche Zeile im Kontext meiner Frage "She-Bang-Zeile" genannt wird und wozu ich die Funktion der "She-Bang-Zeile" benötige.
Danke vielmals für die bisherige Hilfe
Benutzeravatar
__blackjack__
User
Beiträge: 13004
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Die She-Bang-Zeile ist die Zeile mit der Zeichenfolge '#!' was auch She-Bang genannt wird. Damit gibt man unter Unix-Systemen an mit welchem Programm eine Textdatei ausgeführt werden soll. Also zum Beispiel '#!/usr/bin/env python3'. Unter Windows wird das über Dateiendungen erledigt, man kann *.py also nur mit einem Programm verknüpfen. Dafür gibt es in Python 3 dann die py.exe, die man mit *.py-Dateien verknüpft und die dann anhand der She-Bang-Zeile entscheidet mit welchem Python die Datei ausgeführt werden soll. Das lässt sich konfigurieren. Das steht aber auch alles in der Python-Dokumentation.

Ich glaube wenn man erst eine Python 2 installiert, also so richtig mit %PATH% und so und dann die Python 3, dann sollte Python 3 die vorhandene Python 2-Version erkennen können und die Konfiguration für py.exe passend anlegen. Aber Windows ist nicht so meins.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
Antworten