Если вы не хотите использовать какой-либо объект, вы можете использовать setattr()
внутри вашего текущего модуля:
import sys
current_module = module = sys.modules[__name__] # i.e the "file" where your code is written
setattr(current_module, 'variable_name', 15) # 15 is the value you assign to the var
print(variable_name) # >>> 15, created from a string
Если вы пишете скрипт bash, вызовите его по имени:
#!/bin/bash
/ bin / sh не гарантируется bash. Это вызвало тонну сломанных скриптов в Ubuntu несколько лет назад (IIRC).
Встроенный источник прекрасно работает в bash; но вы могли бы просто использовать точку, как предположил Норман.
В Ubuntu, если вы выполняете скрипт с sh scriptname.sh
, вы получаете эту проблему.
Попробуйте выполнить скрипт с помощью ./scriptname.sh
.
В стандарте POSIX, который предполагается считать /bin/sh
, команда .
(одна точка), а не source
. Команда source
представляет собой csh
-ism, который был втянут в bash
.
Попробуйте
. $env_name/bin/activate
Или, если у вас должен быть не-POSIX bash
в вашем коде, используйте #!/bin/bash
.