Linux python script path

How do I get the path of the Python script I am running in? [duplicate]

How do I get the path of a the Python script I am running in? I was doing dirname(sys.argv[0]) , however on Mac I only get the filename — not the full path as I do on Windows. No matter where my application is launched from, I want to open files that are relative to my script file(s).

@sorin oh, but they are; a module object can be created for any script file. Just because something never actually gets import ed doesn’t make it «not a module». The answer is the same, anyway: treat the script as a module (use some kind of bootstrap if really necessary) and then apply the same technique.

Yes, a script is a module, but this well-asked question should be re-opened. It has not been answered here, and the «duplicate» question is not a duplicate because it only answers how to get the location of a module you have loaded, not the one you are in.

@acidzombie24 you don’t need the full path to open and manipulate files from your directory. you can, for example, open(‘images/pets/dog.png’) and Python will do the other.

5 Answers 5

Use this to get the path of the current file. It will resolve any symlinks in the path.

import os file_path = os.path.realpath(__file__) 

This works fine on my mac. It won’t work from the Python interpreter (you need to be executing a Python file).

import os print os.path.abspath(__file__) 

Thanks. This get the path of the .py file where the code is written, which is what I want, even though OP wanted another path.

This should be combined with information in the other answer: os.path.abspath(os.path.dirname(__file__)) will give the directory.

import sys, os print('sys.argv[0] =', sys.argv[0]) pathname = os.path.dirname(sys.argv[0]) print('path =', pathname) print('full path =', os.path.abspath(pathname)) 

I like how your answer shows a lot of different variations and features from python to solve the question.

@SorinSbarnea see the subject of the question: get the path of the running script (the script which has been executed). An import ed module is just a resource.

Читайте также:  Linux route add пример

The question is not very clear, but your solution would work only if it is called at the beginning of the script (in order to be sure that nobody changes the current directory). I am inclined to use the inspect method instead. «running script» is not necessarily same as «called script» (entry point) or «currently running script».

The accepted solution for this will not work if you are planning to compile your scripts using py2exe. If you’re planning to do so, this is the functional equivalent:

Py2exe does not provide an __file__ variable. For reference: http://www.py2exe.org/index.cgi/Py2exeEnvironment

Unluckily this does not work on Mac, as the OP says. Please see sys.argv: it is operating system dependent whether this is a full pathname or not

@Stefano that’s not a problem. To make sure it’s an absolute (full) pathname, use os.path.abspath(. )

If you have even the relative pathname (in this case it appears to be ./ ) you can open files relative to your script file(s). I use Perl, but the same general solution can apply: I split the directory into an array of folders, then pop off the last element (the script), then push (or for you, append ) on whatever I want, and then join them together again, and BAM! I have a working pathname that points to exactly where I expect it to point, relative or absolute.

Of course, there are better solutions, as posted. I just kind of like mine.

In python this does not work if you call the script from a completely different path, e.g. if you are in ~ and your script is in /some-path/script you’ll get ./ equal to ~ and not /some-path as he asked (and I need too)

Источник

Python 3 — Урок 002. Настройка среды

Откройте окно терминала и введите «python», чтобы узнать, установлен ли он и какая версия установлена.

Получение Python

Платформа Windows

  • Windows x86-64 embeddable zip file
  • Windows x86-64 executable installer
  • Windows x86-64 web-based installer
  • Windows x86 embeddable zip file
  • Windows x86 executable installer
  • Windows x86 web-based installer

Примечание. Для установки Python 3.6.4 минимальными требованиями к ОС являются Windows 7 с пакетом обновления 1 (SP1). Для версий от 3.0 до 3.4.x Windows XP является приемлемым.

Платформа Linux

Различные варианты использования Linux используют разные менеджеры пакетов для установки новых пакетов.

На Ubuntu Linux Python 3 устанавливается с помощью следующей команды из терминала.

 
sudo apt-get install python3-minimal

Загрузите исходный tar-файл Gzipped с URL-адреса загрузки Python https://www.python.org/ftp/python/3.6.4/Python-3.6.4.tgz

 
Extract the tarball tar xvfz Python-3.5.1.tgz Configure and Install: cd Python-3.5.1 ./configure --prefix = /opt/python3.5.1 make sudo make install

Mac OS

Загрузите установщики Mac OS с этого URL-адреса https://www.python.org/downloads/mac-osx/

Дважды щелкните этот файл пакета и следуйте инструкциям мастера для установки.

Самый современный и текущий исходный код, двоичные файлы, документация, новости и т.д. Доступны на официальном сайте Python -

Python Official Website − https://www.python.org/

Вы можете загрузить документацию Python со следующего сайта. Документация доступна в форматах HTML, PDF и PostScript.

Python Documentation Website − www.python.org/doc/

Настройка PATH

Программы и другие исполняемые файлы могут быть во многих каталогах. Следовательно, операционные системы предоставляют путь поиска, в котором перечислены каталоги, которые он ищет для исполняемых файлов.

Важными особенностями являются:

  • Путь хранится в переменной среды, которая является именованной строкой, поддерживаемой операционной системой. Эта переменная содержит информацию, доступную для командной оболочки и других программ.
  • Переменная пути называется PATH в Unix или Path в Windows (Unix чувствительна к регистру, Windows - нет).
  • В Mac OS установщик обрабатывает детали пути. Чтобы вызвать интерпретатор Python из любого конкретного каталога, вы должны добавить каталог Python на свой путь.

Настройка PATH в Unix / Linux

Чтобы добавить каталог Python в путь для определенного сеанса в Unix -

  • В csh shell - введите setenv PATH "$ PATH:/usr/local/bin/python3" и нажмите Enter.
  • В оболочке bash (Linux) - введите PYTHONPATH=/usr/local/bin/python3.4 и нажмите Enter.
  • В оболочке sh или ksh - введите PATH = "$PATH:/usr/local/bin/python3" и нажмите Enter.

Примечание. /usr/local/bin/python3 - это путь к каталогу Python.

Настройка PATH в Windows

Чтобы добавить каталог Python в путь для определенного сеанса в Windows -

Примечание. C:\Python - это путь к каталогу Python.

Переменные среды Python

S.No. Переменная и описание
1 PYTHONPATH Он играет роль, подобную PATH. Эта переменная сообщает интерпретатору Python, где можно найти файлы модулей, импортированные в программу. Он должен включать каталог исходной библиотеки Python и каталоги, содержащие исходный код Python. PYTHONPATH иногда задается установщиком Python.
2 PYTHONSTARTUP Он содержит путь к файлу инициализации, содержащему исходный код Python. Он выполняется каждый раз, когда вы запускаете интерпретатор. Он называется как .pythonrc.py в Unix и содержит команды, которые загружают утилиты или изменяют PYTHONPATH.
3 PYTHONCASEOK Он используется в Windows, чтобы проинструктировать Python о поиске первого нечувствительного к регистру совпадения в инструкции импорта. Установите эту переменную на любое значение, чтобы ее активировать.
4 PYTHONHOME Это альтернативный путь поиска модуля. Он обычно встроен в каталоги PYTHONSTARTUP или PYTHONPATH, чтобы упростить библиотеку модулей коммутации.

Запуск Python

Существует три разных способа запуска Python -

Интерактивный интерпретатор

Вы можете запустить Python из Unix, DOS или любой другой системы, которая предоставляет вам интерпретатор командной строки или окно оболочки.

Введите python в командной строке.

Начните кодирование сразу в интерактивном интерпретаторе.

 
$python # Unix/Linux or python% # Unix/Linux or C:>python # Windows/DOS

Вот список всех доступных параметров командной строки -

S.No. Вариант и описание
1 -d предоставлять отладочную информацию
2 -O генерировать оптимизированный байт-код (приводящий к .pyo-файлам)
3 -S не запускайте сайт импорта, чтобы искать пути Python при запуске
4 -v подробный вывод (подробная трассировка по операциям импорта)
5 -X отключить встроенные исключения на основе классов (просто используйте строки); устаревший, начиная с версии 1.6
6 -c cmd запустить скрипт Python, отправленный в виде строки cmd
7 file запустить скрипт Python из заданного файла

Скрипт из командной строки

Сценарий Python можно запустить в командной строке, вызвав интерпретатор в вашем приложении, как показано в следующем примере.

 
$python script.py # Unix/Linux or python% script.py # Unix/Linux or C:>python script.py # Windows/DOS

Примечание. Убедитесь, что права файлов разрешают выполнение.

Интегрированная среда разработки

Вы можете запустить Python из среды графического интерфейса пользователя (GUI), если у вас есть приложение GUI в вашей системе, которое поддерживает Python.

Для разработки Python приложений рекомендую PyCharm от компании JetBrains, как наиболее развитую и удобную IDE.

Рекомендуем хостинг TIMEWEB

Рекомендуем хостинг TIMEWEB

Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.

Рекомендуемые статьи по этой тематике

По статье задано0 вопрос(ов)

Вам это нравится? Поделитесь в социальных сетях!

Источник

How to set up Python path?

I have uninstall anaconda2. but now when I run Python command in terminal it says "bash: /home/user/anaconda2/python: No such file or directory" now how can I set to Python when I have python 2.7 in "/usr/lib" .

When you installed anaconda2, did you add any PYTHONPATH directives to your startup file(s) (such as your ~/.bashrc )? You probably just need to remove these, rather than set any additional path.

4 Answers 4

I'm assuming that when you installed anaconda 2, you manually set the PYTHONPATH environment variable, by putting something like

PYTHONPATH=/home/user/anaconda2/python export PYTHONPATH 

in your .bash_profile or .bash_rc .

But since you deleted the /home/user/anacanda2/ directory, that path no longer exists.

Thus you want to change PYTHONPATH to point to the executable in /usr/lib , by changing the above to

PYTHONPATH=/usr/lib/my_python_distribution export PYTHON 
root1@master:/usr/lib/python2.7$ echo $PATH /home/root1/anaconda3/bin:/home/root1/NAI/Execution/HDE/x86_64.linux/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/root1/java/jdk1.8.0_74/bin:/usr/lib/jvm/java-8-oracle/bin:/usr/lib/jvm/java-8-oracle/db/bin:/usr/lib/jvm/java-8-oracle/jre/bin:/home/root1/NAI/hadoop-2.7.3/bin 
export PATH=/home/root1/NAI/Execution/HDE/x86_64.linux/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/root1/java/jdk1.8.0_74/bin:/usr/lib/jvm/java-8-oracle/bin:/usr/lib/jvm/java-8-oracle/db/bin:/usr/lib/jvm/java-8-oracle/jre/bin:/home/root1/NAI/hadoop-2.7.3/bin 
root1@master:/usr/lib/python2.7$ python Python 2.7.14 (default, Sep 18 2017, 00:00:00) [GCC 4.8.4] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> 

Источник

Оцените статью
Adblock
detector