Eu quero correr:
python somescript.py somecommand
Mas, ao executar isso, preciso PYTHONPATH
incluir um determinado diretório. Não posso simplesmente adicioná-lo às minhas variáveis de ambiente porque o diretório que desejo adicionar muda com base no projeto que estou executando. Existe uma maneira de alterar PYTHONPATH
durante a execução de um script? Nota: Eu nem mesmo tenho uma PYTHONPATH
variável, então não preciso me preocupar em anexar a ela em vez de substituí-la durante a execução deste script.
python
pythonpath
orokusaki
fonte
fonte
PYTHONPATH=/foo/bar python somescript.py somecommand
python -c"import sys;sys.path.append('/my/dir')"
e entãopython myscript.py mycommand
, mas obviamente não compartilha o caminho da primeira sessão do intérprete com a próxima. Ah, acabei de ver seu próximo comentário, tentando agora ... Não funcionou no WinXP.unset
comando de variável de ambiente no Windows. Em vez disso, adicione umsetlocal
após o inicialecho off
e, em seguida, um implícitoendlocal
ocorrerá quando o script .bat terminar (ePYTHONPATH
será restaurado ao seu valor anterior).PYTHONPATH
, convém usarset PYTHONPATH=%PYTHONPATH%;%1
.import sys sys.path.append('your certain directory')
Basicamente, sys.path é uma lista com todos os caminhos de pesquisa para módulos Python. Ele é inicializado pelo intérprete. O conteúdo de PYTHONPATH é adicionado automaticamente ao final dessa lista.
fonte
sys.path.append(r'D:\PyCharmProjects\cheese_shoppe')
exemplo no Windows.Se você estiver executando o comando a partir de um shell compatível com POSIX, por exemplo
bash
, você pode definir a variável de ambiente assim:PYTHONPATH="/path/to" python somescript.py somecommand
Se estiver tudo em uma linha, o valor de ambiente PYTHONPATH se aplica apenas a esse comando.
$ echo $PYTHONPATH $ python -c 'import sys;print("/tmp/pydir" in sys.path)' False $ PYTHONPATH=/tmp/pydir python -c 'import sys;print("/tmp/pydir" in sys.path)' True $ echo $PYTHONPATH
fonte
python -c "import sys; sys.path.insert(0,'my/path'); import mymodule"
não funcionou.Você pode tentar isso para executar uma função dentro do seu script
python -c "import sys; sys.path.append('/your/script/path'); import yourscript; yourscript.yourfunction()"
fonte
Isto é para janelas:
Por exemplo, tenho uma pasta chamada "mygrapher" na minha área de trabalho. Dentro, há pastas chamadas "cálculo" e "representação gráfica" que contêm arquivos Python que meu arquivo principal "grapherMain.py" precisa. Além disso, "grapherMain.py" é armazenado em "gráficos". Para executar tudo sem mover arquivos, posso fazer um script em lote. Vamos chamar esse arquivo em lote de "rungraph.bat".
@ECHO OFF setlocal set PYTHONPATH=%cd%\grapher;%cd%\calculation python %cd%\grapher\grapherMain.py endlocal
Este script está localizado em "mygrapher". Para executar as coisas, eu entraria em meu prompt de comando e faria:
>cd Desktop\mygrapher (this navigates into the "mygrapher" folder) >rungraph.bat (this executes the batch file)
fonte