Sat, 26 Apr 2025 12:34:32 +0200
MicroPython
- Added a configuration option to disable the support for the no longer produced Pimoroni Pico Wireless Pack.
9624
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1 | # -*- coding: utf-8 -*- |
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2 | |
11090
f5f5f5803935
Updated copyright for 2025.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10836
diff
changeset
|
3 | # Copyright (c) 2022 - 2025 Detlev Offenbach <detlev@die-offenbachs.de> |
9624
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
4 | # |
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
5 | |
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
6 | """ |
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
7 | Module implementing Python related utility functions. |
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
8 | """ |
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
9 | |
10351
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
10 | import contextlib |
9624
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
11 | import os |
10351
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
12 | import platform |
9624
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
13 | import sys |
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
14 | import sysconfig |
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
15 | |
10351
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
16 | from .OSUtilities import isWindowsPlatform |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
17 | |
9624
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
18 | |
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
19 | def getPythonExecutable(): |
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
20 | """ |
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
21 | Function to determine the path of the (non-windowed) Python executable. |
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
22 | |
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
23 | @return path of the Python executable |
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
24 | @rtype str |
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
25 | """ |
10334 | 26 | if sys.platform.startswith(("linux", "freebsd")): |
9624
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
27 | return sys.executable |
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
28 | elif sys.platform == "darwin": |
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
29 | return sys.executable.replace("pythonw", "python") |
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
30 | else: |
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
31 | return sys.executable.replace("pythonw.exe", "python.exe") |
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
32 | |
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
33 | |
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
34 | def getPythonLibraryDirectory(): |
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
35 | """ |
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
36 | Function to determine the path to Python's library directory. |
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
37 | |
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
38 | @return path to the Python library directory |
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
39 | @rtype str |
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
40 | """ |
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
41 | return sysconfig.get_path("platlib") |
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
42 | |
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
43 | |
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
44 | def getPythonScriptsDirectory(): |
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
45 | """ |
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
46 | Function to determine the path to Python's scripts directory. |
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
47 | |
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
48 | @return path to the Python scripts directory |
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
49 | @rtype str |
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
50 | """ |
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
51 | return sysconfig.get_path("scripts") |
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
52 | |
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
53 | |
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
54 | def getPythonLibPath(): |
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
55 | """ |
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
56 | Function to determine the path to Python's library. |
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
57 | |
10431
64157aeb0312
Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10359
diff
changeset
|
58 | @return path to the Python library |
64157aeb0312
Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10359
diff
changeset
|
59 | @rtype str |
9624
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
60 | """ |
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
61 | return sysconfig.get_path("platstdlib") |
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
62 | |
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
63 | |
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
64 | def getPythonVersion(): |
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
65 | """ |
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
66 | Function to get the Python version (major, minor) as an integer value. |
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
67 | |
10431
64157aeb0312
Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10359
diff
changeset
|
68 | @return integer representing major and minor version number |
64157aeb0312
Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10359
diff
changeset
|
69 | @rtype int |
9624
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
70 | """ |
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
71 | return sys.hexversion >> 16 |
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
72 | |
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
73 | |
10836
dc7f25f2f7e4
Refactored some code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10834
diff
changeset
|
74 | def isPythonSource(filename, source, editor=None): |
9624
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
75 | """ |
10836
dc7f25f2f7e4
Refactored some code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10834
diff
changeset
|
76 | Function to check for a Python source code file. |
9624
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
77 | |
10431
64157aeb0312
Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10359
diff
changeset
|
78 | @param filename name of the file with extension |
64157aeb0312
Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10359
diff
changeset
|
79 | @type str |
64157aeb0312
Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10359
diff
changeset
|
80 | @param source of the file |
64157aeb0312
Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10359
diff
changeset
|
81 | @type str |
64157aeb0312
Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10359
diff
changeset
|
82 | @param editor reference to the editor, if the file is opened already |
10836
dc7f25f2f7e4
Refactored some code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10834
diff
changeset
|
83 | (defaults to None) |
dc7f25f2f7e4
Refactored some code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10834
diff
changeset
|
84 | @type Editor (optional) |
dc7f25f2f7e4
Refactored some code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10834
diff
changeset
|
85 | @return flag indicating Python source code |
dc7f25f2f7e4
Refactored some code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10834
diff
changeset
|
86 | @rtype bool |
9624
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
87 | """ |
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
88 | from eric7 import Preferences, Utilities |
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
89 | from eric7.EricWidgets.EricApplication import ericApp |
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
90 | |
10836
dc7f25f2f7e4
Refactored some code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10834
diff
changeset
|
91 | pythonEquivalents = ("Cython", "MicroPython", "Python3") |
9624
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
92 | |
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
93 | if not editor: |
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
94 | viewManager = ericApp().getObject("ViewManager") |
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
95 | editor = viewManager.getOpenEditor(filename) |
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
96 | |
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
97 | # Maybe the user has changed the language |
10836
dc7f25f2f7e4
Refactored some code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10834
diff
changeset
|
98 | if editor and editor.getFileType() in pythonEquivalents: |
dc7f25f2f7e4
Refactored some code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10834
diff
changeset
|
99 | return True |
9624
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
100 | |
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
101 | if filename: |
9905
189b7a23c3c6
Changed some code to let the editor determine the highlighter language for files loaded from a connected µPy device.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
102 | if not source and os.path.exists(filename): |
9624
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
103 | source = Utilities.readEncodedFile(filename)[0] |
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
104 | flags = Utilities.extractFlags(source) |
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
105 | ext = os.path.splitext(filename)[1] |
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
106 | py3Ext = Preferences.getPython("Python3Extensions") |
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
107 | project = ericApp().getObject("Project") |
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
108 | basename = os.path.basename(filename) |
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
109 | |
10836
dc7f25f2f7e4
Refactored some code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10834
diff
changeset
|
110 | if "FileType" in flags and flags["FileType"] in pythonEquivalents: |
dc7f25f2f7e4
Refactored some code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10834
diff
changeset
|
111 | return True |
9624
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
112 | elif project.isOpen() and project.isProjectFile(filename): |
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
113 | language = project.getEditorLexerAssoc(basename) |
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
114 | if not language: |
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
115 | language = Preferences.getEditorLexerAssoc(basename) |
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
116 | if language == "Python3": |
10836
dc7f25f2f7e4
Refactored some code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10834
diff
changeset
|
117 | return True |
9624
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
118 | |
10836
dc7f25f2f7e4
Refactored some code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10834
diff
changeset
|
119 | if ( |
9624
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
120 | Preferences.getProject("DeterminePyFromProject") |
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
121 | and project.isOpen() |
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
122 | and project.isProjectFile(filename) |
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
123 | and ext in py3Ext |
10836
dc7f25f2f7e4
Refactored some code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10834
diff
changeset
|
124 | and project.getProjectLanguage() in pythonEquivalents |
9624
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
125 | ): |
10836
dc7f25f2f7e4
Refactored some code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10834
diff
changeset
|
126 | return True |
9624
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
127 | elif ext in py3Ext: |
10836
dc7f25f2f7e4
Refactored some code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10834
diff
changeset
|
128 | return True |
9624
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
129 | elif source: |
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
130 | if isinstance(source, str): |
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
131 | line0 = source.splitlines()[0] |
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
132 | else: |
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
133 | line0 = source[0] |
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
134 | if line0.startswith("#!") and (("python3" in line0) or ("python" in line0)): |
10836
dc7f25f2f7e4
Refactored some code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10834
diff
changeset
|
135 | return True |
9624
b47dfa7a137d
Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
136 | |
10836
dc7f25f2f7e4
Refactored some code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10834
diff
changeset
|
137 | return False |
10351
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
138 | |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
139 | |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
140 | def searchInterpreters(environments=None): |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
141 | """ |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
142 | Function to determine a list of all Python interpreters available via the |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
143 | executable search path (i.e. PATH) (Windows variant). |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
144 | |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
145 | @param environments list of environment directories to scan for Python interpreters |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
146 | (defaults to None) |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
147 | @type list of str (optional) |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
148 | @return list of found interpreter executables |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
149 | @rtype list of str |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
150 | """ |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
151 | if isWindowsPlatform(): |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
152 | return __searchInterpreters_Windows(environments=environments) |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
153 | else: |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
154 | return __searchInterpreters_Linux(environments=environments) |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
155 | |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
156 | |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
157 | def __searchInterpreters_Windows(environments=None): |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
158 | """ |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
159 | Function to determine a list of all Python interpreters available via the |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
160 | executable search path (i.e. PATH) (Windows variant). |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
161 | |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
162 | @param environments list of environment directories to scan for Python interpreters |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
163 | (defaults to None) |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
164 | @type list of str (optional) |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
165 | @return list of found interpreter executables |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
166 | @rtype list of str |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
167 | """ |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
168 | try: |
11148
15e30f0c76a8
Adjusted the code to the modified issue codes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11090
diff
changeset
|
169 | import winreg # noqa: I-101, I-103 |
10351
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
170 | except ImportError: |
11148
15e30f0c76a8
Adjusted the code to the modified issue codes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11090
diff
changeset
|
171 | import _winreg as winreg # noqa: I-101, I-102 |
10351
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
172 | |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
173 | def getExePath(branch, access, versionStr): |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
174 | with contextlib.suppress(WindowsError, OSError): |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
175 | software = winreg.OpenKey(branch, "Software", 0, access) |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
176 | python = winreg.OpenKey(software, "Python", 0, access) |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
177 | pcore = winreg.OpenKey(python, "PythonCore", 0, access) |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
178 | version = winreg.OpenKey(pcore, versionStr, 0, access) |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
179 | installpath = winreg.QueryValue(version, "InstallPath") |
10359
de0420dac60e
Corrected some code formatting and style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10351
diff
changeset
|
180 | exe = os.path.join(installpath, "python.exe") |
10351
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
181 | if os.access(exe, os.X_OK): |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
182 | return exe |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
183 | |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
184 | return None |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
185 | |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
186 | minorVersions = range(8, 16) # Py 3.8 until Py 3.15 |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
187 | interpreters = set() |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
188 | |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
189 | if environments: |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
190 | for directory in [os.path.join(d, "Scripts") for d in environments]: |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
191 | exe = os.path.join(directory, "python.exe") |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
192 | if os.access(exe, os.X_OK): |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
193 | interpreters.add(exe) |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
194 | |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
195 | else: |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
196 | versionSuffixes = ["", "-32", "-64"] |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
197 | for minorVersion in minorVersions: |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
198 | for versionSuffix in versionSuffixes: |
10359
de0420dac60e
Corrected some code formatting and style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10351
diff
changeset
|
199 | versionStr = "{0}.{1}{2}".format("3", minorVersion, versionSuffix) |
10351
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
200 | exePath = getExePath( |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
201 | winreg.HKEY_CURRENT_USER, |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
202 | winreg.KEY_WOW64_32KEY | winreg.KEY_READ, |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
203 | versionStr, |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
204 | ) |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
205 | if exePath: |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
206 | interpreters.add(exePath) |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
207 | |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
208 | exePath = getExePath( |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
209 | winreg.HKEY_LOCAL_MACHINE, |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
210 | winreg.KEY_WOW64_32KEY | winreg.KEY_READ, |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
211 | versionStr, |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
212 | ) |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
213 | if exePath: |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
214 | interpreters.add(exePath) |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
215 | |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
216 | # Even on Intel 64-bit machines it's 'AMD64' |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
217 | if platform.machine() == "AMD64": |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
218 | exePath = getExePath( |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
219 | winreg.HKEY_CURRENT_USER, |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
220 | winreg.KEY_WOW64_64KEY | winreg.KEY_READ, |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
221 | versionStr, |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
222 | ) |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
223 | if exePath: |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
224 | interpreters.add(exePath) |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
225 | |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
226 | exePath = getExePath( |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
227 | winreg.HKEY_LOCAL_MACHINE, |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
228 | winreg.KEY_WOW64_64KEY | winreg.KEY_READ, |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
229 | versionStr, |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
230 | ) |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
231 | if exePath: |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
232 | interpreters.add(exePath) |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
233 | |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
234 | return list(interpreters) |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
235 | |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
236 | |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
237 | def __searchInterpreters_Linux(environments=None): |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
238 | """ |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
239 | Function to determine a list of all Python interpreters available via the |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
240 | executable search path (i.e. PATH) (non Windows variant). |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
241 | |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
242 | @param environments list of environment directories to scan for Python interpreters |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
243 | (defaults to None) |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
244 | @type list of str (optional) |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
245 | @return list of found interpreter executables |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
246 | @rtype list of str |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
247 | """ |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
248 | from eric7.SystemUtilities import OSUtilities |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
249 | |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
250 | minorVersions = range(8, 16) # Py 3.8 until Py 3.15 |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
251 | interpreters = [] |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
252 | |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
253 | if environments: |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
254 | directories = [os.path.join(d, "bin") for d in environments] |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
255 | else: |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
256 | searchpath = OSUtilities.getEnvironmentEntry("PATH") |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
257 | directories = searchpath.split(os.pathsep) if searchpath else [] |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
258 | |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
259 | if directories: |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
260 | pythonNames = ["python3.{0}".format(v) for v in minorVersions] |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
261 | for directory in directories: |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
262 | for interpreter in pythonNames: |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
263 | exe = os.path.join(directory, interpreter) |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
264 | if os.access(exe, os.X_OK): |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
265 | interpreters.append(exe) |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
266 | |
1f9bafeff96c
Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10334
diff
changeset
|
267 | return interpreters |