VSCode :: ATOM und PyCharm aufsetzen - Ansätze, Vorgehen und Stolperfallen
Tags: vscde, python, beginners
Published: 2023-03-14 23:02:43

hallo und guten Abend liebe Community. 

VSCode :: ATOM und PyCharm aufsetzen - Ansätze, Vorgehen und Stolperfallen
ich will [B] VSCode, ATOM und PyCharm [/B] auf den Rechner aufsetzen  - genauer gesagt auf zwei Rechner: einem Win udn einem MX-Linux-Rechner: 

[B]Was ist beabsichtigt[/B]:  will die drei IDEs bzw. Editoren ausprobieren. 

VSCode, ATOM und PyCharm - habe mit allen dreien schon allererste Schitte gemacht - nun kommen sie neu auf die beiden Rechner 

WIN 10 (im Büro) 
MX-Linux (@home) 

[B]die Links: [/B]

[url]https://code.visualstudio.com/docs/?dv=win[/url]
[url]https://atom.io[/url]
[url]https://www.jetbrains.com/de-de/pycharm/download/[/url]

wie würdet ihr vorgehen - einfach durchinstallieren - 

nebenbei bemerkt: bei VSCode gibt es Python als Paket(-Erweiterung).  Ist das dann im Grunde dann wenn ich das dort als Paket installiere lediglich für VSCode verwendbar!`Das würde ggf für ATOM auch gelten - oder nicht!=? Auch dort habe ich viele Pakete und Erweiterungen 

Auf was würdet ihr denn setzen - wie vorgehen und auf was besonders achten!? 
[B]Anm.: [/B] Das tolle an ATOM ist die sehr gute github-Integration. 
[B]Oder:[/B] im Blick auf Python - würdet ihr erstmal das Pyton auf dem Win-Rechner aufsetzen. 

Dann darüber hinaus: ... will ich das Ganze auch auf dem MX-Linux-Rechner aufsetzen. Denke dass ich da auch VSCoce sicher als sehr leistungsfähig voraussetzen kann. 
Der freie VSCode heißt dort .- glaube ich - VSCodium. wie würdet ihr vorgehen - einfach durchinstallieren - Auf was würdet ihr denn setzen - wie vorgehen und auf was besonders achten!?
[B]Anm[/B].: Das tolle an ATOM ist die sehr gute github-Integration. Oder: im Blick auf Python - würdet ihr erstmal das Pyton auf dem Win-Rechner aufsetzen.

jede Menge Fragen - ich freue mich auf einen Tipp

[B]update:[/B]vorweg: bin sehr froh dass ihr ein Forum hier habt, das für dem Thema Installation und Konfiguration vorbehalten ist. Super Sache und wie für mich gemacht. ,,,, ich bin am Aufbau einer Entwicklungsumgebung für Python auf zwei Systemen:

Win 10: mit PyCharm, VsCode u. ATOM (Bürorechner)

MX-Linux: mit ATOM (@home)

[B]Zwischenfazit[/B]: also noch läuft das etwas holprig - auf der Linux-Kiste ist die Frage ob ich denn


a. alle Python-Pakete schon richtig eingerichtet habe und ob

b. ich auch die richtigen Plugins von Atom verwende - ferner hätte ich auf der MX-Linux 19.1 gerne halt auch

c. VSCode, das ist im Mom aber nicht in den Repositories drinne - die Installation kann via Flatpack oder Codium oder noch auf einem dritten

Wege laufen.... Alles in Allem halt etwas doof - aber ATOM ist - wenn alles gut eingerichtet ist ja auch nicht übel hat v.a. auch eine nette Github-Integration.

Es kommen also sicher zu beiden Systeme - zum Aufbau auf Windows 10 und auch auf der MX-Linux-Kiste sicher noch ein paar Fragen in den kommenden Tagen.


Im Moment frage ich mich ob es schlau ist Python global zu installieren und nicht über eine venv...

habe hier[B] zwei Artikel[/B] gelesen:

[url]https://python-forum.io/Thread-use-X...e-skip-setting[/url]

generell:

Article on using Virtual Environments for Python projects.

[url]https://towardsdatascience.com/pytho...y-fe0c603fe601[/url]

Comparing Python Virtual Environment tools

[url]https://towardsdatascience.com/compa...s-9a6543643a44[/url]


[B]Frage: [/B]Was meint ihr hier denn dazu?

was meint ihr denn - ist das im Übrigen vielleicht schlauer, scon von Anfang an auf Anaconda zu setzen - denn mit Anaconda hat man gleich ein einfache Packet-Managment-Sytem und viele viele Paket enthalten.

[B]Anaconda[/B] ist eine Data Science-Plattform, die von Python unterstützt wird. Die Open-Source-Version von Anaconda ist eine Hochleistungsdistribution von Python und R und umfasst über 100 der beliebtesten Python-, R- und Scala-Pakete für Data Science.

Es hat Zugriff auf über 720 Pakete, die mit conda, dem Paket, dem Abhängigkeits-Manager und dem Umgebungsmanager, die in Anaconda enthalten sind, installiert werden können. Einer der großen Vorteile von Anaconda dürfte der sein, dass es ein eigenes System zur Installation von Modulen praktisch schon selber mitbringt, welche fertige, ggf. vorkompilierte Module installiert. Es hat - mit anderen Worten viele Module schon an Bord. Das erleichtert dann doch schon erheblich: Es gibt z.B. auch Module wie etwa numpy, pandas, welche realtiv aufwändig zu installlieren sind. Da kann es dann auch einen nicht zu unterschätzenden Vorteil bedeuten, wenn die manuelle Installation via pip dabei entfällt.

Und das tolle ist: Anaconda ist in der Lage sich selber, zu aktualisieren - m.a.W. es kann den Interpreter und die Module in einem Rutsch automatisch aktualisieren.

Man kann dann natürlich auch z.B. etwa Minoconda nehme
n. Das installiert "nur" den Python-Interpreter und die Verwaltungssystem `conda`, aber keine zusätzlichen Pakete. Anaconda installiert ja direkt ~500 MB (also das ist schon relativ dick) in Form von X hundert Python-Modulen.


[B]virtualenv unter anaconda[/B]

was mich allerdings etwas wundert: Aber auch da wird ein virtualenv angeboten anaconda - es gibt sogar ein virtualenv plugin für pyenv.

pyenv und virtualenv: brauch ich die denn bei Anaconda denn gleich auch am Anfang - muss ich die miteinrichten oder eher nur bei (Mini).Conda! Ich hab mir die Tutorials angesehen und mich mal kurz eingelesen:  bei der Installation von Anaconda in ein Win 10 sollte man aufpassen: Wenn python schon auf dem Rechner ist - dann kann es Abhängikeiten geben. Am allerbsesten ist es wenn mal noch nix auf der Maschine ist - also weder Python oder Conda oder Anaconda:: 

.. dennoch: immer und in jedem Falle wichtig und gut: dann nicht einfach durchklicken:  x add anaconda to the system path environment wenn man schon ein.conda directory im home hat - dann ist das nicht weiter tragisch.
[code]
$ cd
$ mkdir -p .conda/pkgs/cache .conda/envs
[/code]

damit richtet man sich ein Python environment ein: Der conda create command führt genau diesen Schritt aus versehen mit einem python=version argument.  

Übrigens sind die package manager in Anaconda und Miniconda glücklicherweise identisch (Conda), Man muss nicht Miniconda in das System installieren wenn man beabsichtigt, ohnehin bei Anaconda zu bleiben. 

envs wird erzeugt mit dem Kommando: 


[code]
conda create -n myenv python some_packages
[/code]

Das klappt - allerdings kann es zu einer Ausnahme kommen - wenn verschiedene Pakete nebeneinander existieren und verschiedene package caches -
Bei Konflikten einfach eines loeschen  und die shell initialization script (e.g., .bash_profile) cleanen - denn die Installer laufen auch darüber.


was wenn ich ein Paket nicht über Conda finde 

[QUOTE]
$ conda install --channel conda-forge ads

snippet aus dem Web
Install from conda-forge
Add the conda-forge channel: conda config --add channels conda-forge.
Create a new environment containing SageMath: conda create -n sage sage python=X , where X is version of Python, e.g. 2.7.
Enter the new environment: conda activate sage.[/QUOTE]


wenn man das package nicht über conda findet, kann man dann tatsächlich via Python packages wie "pip" weitermachen. Das bringt einem doch unweigerlich in die Abhängikeitsfalle - denn conda kennt doch dann die Abhängigkeiten nicht (mehr) wenn ich weitermache mit 

- "easy_install", oder 
- "python setup.py" 

Wenn ich die conda packages in einer Umgebung update, wo conda packages mit anderen packaging styles gemischt sind, bring ich mich 
dann doch in Abhänigkeiten. Ergo denke ich, dass man pip nur sehr zurückhaltend einsetzen sollte - und allenfalls dann - wenn man noch die "--user" option mitverwendet, sodass es dann ins Homeverzeichnis reininstalliert.

insgesamt hier noch mehr zum Thema Anaconda und Conda: what-is-the-difference-between-pyenv-virtualenv-anaconda

[url]https://stackoverflow.com/questions/38217545/what-is-the-difference-between-pyenv-virtualenv-anaconda[/url]
[QUOTE]
pip: the Python Package Manager.
pyenv: Python Version Manager
virtualenv: Python Environment Manager.
Anaconda: Package Manager + Environment Manager + Additional Scientific Libraries.[/QUOTE]



[B]Conda cheat sheet [/B][url]https://medium.com/@buihuycuong/conda-cheat-sheet-f9424fa2e3f5[/url]
Conda cheat sheet
Command line package and environment manager

[B]Managing Conda and Anaconda[/B] [url]https://kapeli.com/cheat_sheets/Conda.docset/Contents/Resources/Documents/index[/url]
Managing Conda and Anaconda
Managing Environments
Managing Python
Managing .condarc Configuration
Managing Packages, Including Python
Removing Packages or Environments


das conda-cheatsheet:  [url]http://know.continuum.io/rs/387-XNW-688/images/conda-cheatsheet.pdf[/url]

-  conda ist beide ein command line tool und ebenso ein python package.

also strukturell ist es so: 

- Miniconda installer beinhaltet Python und das conda-package
- Anaconda installer beinhaltet Python und das conda-package nebst meta package anaconda
- das meta Python pkg anaconda = umfasst weit über 150 andere Python packages 

Ein Überblick ist: [B]Simplifies package management and deployment of Anaconda[/B] [url]https://anaconda.org/anaconda/anaconda/files[/url]

weiterführende Links zum Thema: [url]https://towardsdatascience.com/get-your-computer-ready-for-machine-learning-how-what-and-why-you-should-use-anaconda-miniconda-d213444f36d6#:~:text=Because%20Miniconda%20doesn't%20come,means%20installing%20Conda%20as%20well[/url].


Also zurück [B]zum Thema VSCode[/B] einrichten:  ich hab da mal ein Testscript laufen lassen um einfach mal zu sehen, wie das läuft und wie wichtig die venv ist. 


[code]
import requests
from bs4 import BeautifulSoup
import pandas as pd


def Main(urls):
    with requests.Session() as req:
        allin = []
        for url in urls:
            r = req.get(url)
            soup = BeautifulSoup(r.content, 'html.parser')
            target = soup.find(
                "dl", class_="c-description-list c-description-list--striped")
            names = [item.text for item in target.findAll("dt")]
            names.append("url")
            data = [item.get_text(strip=True) for item in target.findAll("dd")]
            data.append(url)
            allin.append(data)
        df = pd.DataFrame(allin, columns=names)
        df.to_csv("data.csv", index=False)


urls = ['https://www2.daad.de/deutschland/studienangebote/international-programmes/en/detail/4722/',
        'https://www2.daad.de/deutschland/studienangebote/international-programmes/en/detail/6318/']
Main(urls)
[/code]


ein [B]crash in vscode: [/B]

[code]Windows PowerShell Copyright (C) Microsoft Corporation. Alle Rechte vorbehalten.
Lernen Sie das neue plattformübergreifende PowerShell kennen – https://aka.ms/pscore6

PS C:\Users\Kasper\Documents\PlatformIO\Projects\ESP> & C:/Users/Kasper/AppData/Local/Programs/Python/Python37-32/python.exe c:/Users/Kasper/Documents/_f_s_j/_mk_/_dev_/bs4_europe_1.py
Traceback (most recent call last):
  File "c:/Users/Kasper/Documents/_f_s_j/_mk_/_dev_/bs4_europe_1.py", line 3, in <module>
    from bs4 import BeautifulSoup
ModuleNotFoundError: No module named 'bs4'
PS C:\Users\Kasper\Documents\PlatformIO\Projects\ESP>
[/code]




hmm - habe VSCode grade erst eingerichtet - und mit ersten obenstehenden Tests laufen lassen. Denke - wie oben schon gesagt, dass es auf alle Fälle Sinn macht eine venv einzurichten: 

[B]Eine virtuelle Umgebung für Python[/B]

Virtuelle Umgebungen helfen damit ich keine Rücksicht auf den Rest des Systems nehmen muss. Damit versuche ich meine Umgebung einzurichten - so dass es halt passt mir der  Systemumgebung einrichten, 

-macht ja auch Sinn - wenn ich für ein Projekt eine Software brauche, die neuere oder ältere Bibliotheken benötigt, 
- Dann kann ich versuchen, durch die Abhängigkeitsfalle zu kommen, und die Software mit der aktuellen Systemumgebung zum Laufen zu bringen. 

Für Python, denke ich mal ist virtualenv so eine Umgebung. Darin werden über Umgebungsvariablen die Pfade für die zu verwendenden Bibliotheken verstellt, so dass die virtuelle Umgebung unabhängig von den Pythonbibliotheken des Betriebssystems ist.  Einschränkend muss hier gesagt werden dass das mehr Plattenplatz, da etliche Bibliotheken nun wieder mehrfach im vorhanden sind.  Aber immerhin: Platz ist da noch viel viel billiger als die Arbeitszeit, die draufgeht, um eine neue Software an das System oder -  noch schlimmer - das System an eine neue Software anzupassen.

Denke dass ich das mit dem Program virtualenv mache, mit dem ich mir die einzelnen Umgebungen einrichten kann.
Bei MX-Linux gibt es sicher auch das Paket python3-virtualenv, das ich installieren kann. 

[code]sudo dnf install python3-virtualenv[/code]

Damit bin ich schon fertig mit der Installation. Das Software-Paket enthält das Program virtualenv (eventuell mit angefügter Versionsnummer), mit dem ich mir virtuelle Umgebungen für Python einrichten kann.

[B]Einrichtung[/B]: Jetzt habe ich die Software für die virtuellen Umgebungen, wie verwende ich diese nun?

Dann lege ich eine je eigene virtuelle Umgebung an - also pro Projekt muss ich das im Grunde eigentlich  ja nur einmal tun - lege ich eine virtuelle Umgebung an. Ich bewege mich in das Projektverzeichnis und rufe virtuelenv mit dem Namen des Verzeichnisses auf, in dem die Bibliotheken der virtuellen Umgebung abgelegt werden sollen.

[code]
cd $project
virtualenv venv
[/code]

Dieses Verzeichns nenne ich meist venv und zwar aus einem guten Grund, der beim Weiterlesen gleich klar wird.

Die virtuelle Umgebung aktivieren: Jedesmal, wenn ich in meinem Objekt mit der virtuellen Umgebung arbeiten will, muss ich diese aktivieren. Das allerdings nur einmal, bevor ich anfange zu arbeiten.
[code]cd $project
source venv/bin/activate [/code]

geht auch über ne bash alias:  [code]alias venv_activate='source venv/bin/activate'[/code] Dieser Alias ist nicht soviel kürzer als der eigentliche Befehl. 


Das mach ich dann so - und am Ende sieht das dann ggf. so aus. 
[code]
+------------------------+
|                        |
|                        |
|     python-workspace   |
|     ....-folder        |
|                        |
+----------+-------------+
           |
           |
           |              +----------------------+
           |              |                      |
           +--------------+     Project1         |
           |              |                      |
           |              +----------------------+
           |
           |              +----------------------+
           |              |                      |
           +--------------+     Project2         |
           |              |                      |
           |              +----------------------+
           |
           |              +----------------------+
           |              |                      |
           +--------------+     Project3         |
           |              |                      |
           |              +----------------------+
           |
           |              +----------------------+
           |              |                      |
           +--------------+     Project4         |
           |              |                      |
           |              +----------------------+
           |
           |              +----------------------+
           |              |                      |
           +--------------+    Project5          |
           |              |                      |
           |              +----------------------+
           |
           |              +----------------------+
           |              |                      |
           +--------------+   Project6           |
                          |                      |
                          +----------------------+

[/code]

hier noch ein paar how-tos und tutorials:

[url]https://code.visualstudio.com/docs/python/python-tutorial[/url]
[url]https://docs.python-guide.org/dev/virtualenvs/[/url]

create a virtual environment  video by corey schafer
[url]https://www.youtube.com/watch?v=Kg1Yvry_Ydk[/url]

und auch hier - nicht schlecht.
[url]https://dev.to/search?q=vscode[/url]


[B]update:[/B] und um hier noch kurz eine weitere Frage hinterherzuschieben: ich hab VSCode (und Python auf einem Desktop [zugegeben hier jetzt win10])
[B]Frage[/B]: kann ich denn dann hier noch ohne weiteres und ohne Konfigurationsorgien nun ggf. Anaconda installieren? Geht das  denn!? Kommen sich hier nicht Anaconda und Python (das schon auf dem Rechner ist) in die Quere!?

muss ich dann ggf. in das Setting gehen und dort in settings.json den python.path editieren - etwa

[code]"python.pythonPath": "C:\\Anaconda3\\envs\\py34\\python.exe"[/code]

- muss ich dann also noch eine spezifische Umgebung aktivieren -

[quote]...so that the script runs in that Anaconda environment? – and what about the User and Workspace Settings: see here: Activating Anaconda Environment in VsCode :: can i integrate vscode into anaconda - how to do this?

[url]https://stackoverflow.com/questions/43351596/activating-anaconda-environment-in-vscode:[/url] 

the question is: how to configure Visual Studio Code to our liking through its various settings. Nearly every part of VS Code's editor, user interface, and functional behavior has options we can modify. i found some Instructions to edit settings.json here: [url]https://code.visualstudio.com/docs/getstarted/settings[/url]

VS Code provides two different scopes for settings:

User Settings - Settings that apply globally to any instance of VS Code you open.
Workspace Settings - Settings stored inside your workspace and only apply when the workspace is opened.
Workspace settings override user settings. Workspace settings are specific to a project and can be shared across developers on a project.

Note: A VS Code "workspace" is usually just your project root folder. Workspace settings as well as debugging and task configurations are stored at the root in a .vscode folder. You can also have more than one root folder in a VS Code workspace through a feature called Multi-root workspaces.

Creating User and Workspace Settings
To open your user and workspace settings, use the following VS Code menu command:

On Windows/Linux - File > Preferences > Settings
On macOS - Code > Preferences > Settings

[/quote]

Also, die Ausgangs-Zusatz-Frage ist die Folgende: kann ich denn dann hier noch ohne weiteres und ohne Konfigurationsorgien nun ggf.
 Anaconda installieren? Geht das  denn!? Kommen sich hier nicht Anaconda und Python (das schon auf dem Rechner ist) in die Quere!?

zuletzt noch die Vergleichsfrage am Rande: - welches der beiden Systeme wird denn schneller & nachhaltiger entwickelt: Anaconda oder WinPython: 
vgl. [url]https://winpython.github.io/[/url]

[quote]
Designed for scientists, data-scientists, and education (thanks to NumPy, SciPy, Sympy, Matplotlib, Pandas, pyqtgraph, etc.):
interactive data processing and visualization using Python with Spyder and Jupyter/IPython, Pyzo, IDLEX or IDLE
fully integrated Cython and Numba! See included example
connectors (cffi, odbc, rpy2, scilab2py, requests, ...) for advanced users
Portable:
Runs out of the box(*) on any Windows 8+ with 2GB Ram (Jupyter Notebook will require a recent browser)
The WinPython folder can be moved to any location (**) (local, network, USB drive) with most of the application settings
Flexible:
You can install as many WinPython distributions as you want on the same machine: each one is isolated and self-consistent
These installations can be of different versions of Python (3.7/3.8/3.9...)
Customizable:
The integrated WinPython Package Manager (WPPM) helps installing, uninstalling or upgrading Python packages
It's also possible to install or upgrade packages using pip from the WinPython command prompt
A configuration file allows you to set environment variables at runtime
[/quote]


und hier noch ein kurzes Wort zu[B] Pipenv [/B]

Pipenv gilt als ein Tool, das im Grunde darauf abzielt, das Beste aus allen Package-welten (Bundler, Composer, npm, Cargo, Garn usw.) zu machen, bzw. diese in die Python-Welt zu bringen. 

[B]was macht Pipenv:[/B]
Pipenv erstellt und verwaltet automatisch eine virtuelle Umgebung für die Python-Projekte und fügt Pakete aus dem Pipfile hinzu/ oder - auf der anderen Seite - entfernt diese, während man im Grunde genommen Pakete installiert/deinstalliert.
Noch etwas weiteres ist wichtig in diesem Zusammenhang zu erwähnen: Pipenv generiert auch die immer wichtigere Pipfile.lock, 
Pipfile.lock - das ist die zum Erstellen deterministischer Builds verwendet wird.

So gesehen ist Pipenv sehr wichtig: Pipenv sorgt in allererster Linie dafür, dass Benutzern und Entwicklern von Anwendungen eine einfache Methode zum Einrichten einer Arbeitsumgebung bietet.

[B]setup.py vs. Pipfile: [/B]
Wenn man auf die Unterscheidung sieht - also auf die Differenzen zwischen Bibliotheken und Anwendungen und die Verwendung von setup.py vs. Pipfile  dann werden deutliche Unterschiede bemerkbar.  Es gibt im Bezug auf das Definieren von Abhängigkeiten hier ☤ Pipfile vs. setup.py.

Pipenv ist im Grunde nichts anderes als ein Problemlöser: Sieht man im Konkreten auf die Probleme, die Pipenv zu lösen versucht, dann muss man  sagen, dass es ja sehr viele Themen u. Probleme sind, die Pipenv zu lösen versucht.
Das Gute ist, dass Pipenv es ermöglicht, dass man pip und virtualenv nicht mehr separat verwenden muss. Diese beiden, sie arbeiten zusammen.

Wenn man eine requirements.txt-Datei verwalten will - dann kann es mitunter auch problematisch werden, Aus diesem Grunde verwendet Pipenv Pipfile und Pipfile.lock: Denn dadurch werden abstrakte Abhängigkeitserklärungen von der zuletzt getesteten Kombination zu trennen.