පරිසර විචල්‍ය අගයන්ට ප්‍රවේශ වන්නේ කෙසේද?


2138

මගේ පයිතන් යෙදුමට ප්‍රවේශ වීමට අවශ්‍ය පරිසර විචල්‍යයක් මම සකසා ඇත්තෙමි. එහි වටිනාකම මා ලබා ගන්නේ කෙසේද?

Answers:


3195

පාරිසරික විචල්‍යයන් os.en Environment හරහා ප්‍රවේශ වේ

import os
print(os.environ['HOME'])

නැතහොත් ඔබට සියලු පරිසර විචල්‍යයන්ගේ ලැයිස්තුවක් භාවිතා කළ හැකිය:

os.environ

සමහර විට ඔබට සම්පූර්ණ ලැයිස්තුවක් දැකීමට අවශ්‍ය වනු ඇත!

# using get will return `None` if a key is not present rather than raise a `KeyError`
print(os.environ.get('KEY_THAT_MIGHT_EXIST'))

# os.getenv is equivalent, and can also give a default value instead of `None`
print(os.getenv('KEY_THAT_MIGHT_EXIST', default_value))

වින්ඩෝස් හි පයිතන් පෙරනිමි ස්ථාපනය වේ C:\Python. පයිතන් ධාවනය කරන අතරතුර ඔබට සොයා ගැනීමට අවශ්‍ය නම් ඔබට කළ හැක්කේ:

import sys
print(sys.prefix)

1
හෙලෝ සැරයටිය, 'පෙරනිමි ස්ථාපනය' පිළිබඳ ඔබේ effective ලදායී පිළිතුරට ස්තූතියි; සබැඳි හරහා යෑමට වඩා ඉක්මනින් එය තේරුම් ගැනීමට දෘෂ්ටි කෝණයෙන් effective ලදායී වේ. එය ඇත්තෙන්ම මම අගය කළෙමි :) නමුත් මගේ (1) ප්‍රශ්නය ගැන කරුණාකර පහත විධානය දෙස බලන්න සහ ස්නිපටය ප්‍රතිදානය කරන්න: >>> ආනයන os >>> මුද්‍රණ os.en Environment ['පයිතන්පාත්'] ලුහුබැඳීම (අවසන් වරට ඇමතුම අවසන්): ගොනුව " <console> ", 1 වන පේළිය, <module> ගොනුවේ" C: y Python25 \ lib \ os.py ", 435 වන පේළිය, getitem return self.data [key.upper ()] යතුරු දෝෂය: 'PYTHONPATH' >>> print os.en Environment.get ('PYTHONPATH') කිසිවක් නැත >>> // PLZ දිගටම කරගෙන යනු ඇත ... //
අමිත් යාදව්

පළමුවන ආකාරයෙන් ස්ක්‍රිප්ට් ව්‍යතිරේකය විසි කරන අතර දෙවනුව කිසිවක් ලබා නොදේ. ඉතින්, එය අර්ථවත් වටිනාකමක් ලබා ගැනීමට ක්‍රමයක් තිබේද? නැතහොත් මම කරන්නේ වැරදි ආකාරයටද ??? අමිත්.
අමිත් යාදව්

7
os.en Environment යනු ශබ්දකෝෂයකි. ශබ්ද කෝෂයේ නොමැති යතුරකට ප්‍රවේශ වීමට උත්සාහ කිරීම යතුරු දෝෂයක් විසි කරයි. යතුර නොපවතින විට ලබා ගැනීමේ ක්‍රමය කිසිවක් ආපසු ලබා නොදේ. ඔබට පයිතන්පාත් කට්ටලයක් තිබේද? PATH වැනි විචල්‍යයක් සමඟ ඔබට උත්සාහ කළ හැකිද? එය අර්ථවත් වටිනාකමක් ලබා දෙයිද?
රොඩ්

2
පයිතන් පිටත සිට පයිතන් (sys.path) වෙත නව සෙවුම් මාර්ගයක් එක් කිරීමට පයිතන්පාත් භාවිතා කරයි. Docs.python.org/using/cmdline.html#en Environment
රොඩ්

11
.get()පෙරනිමියක් ද ලබා දිය හැකිය.
ග්‍රින්ගෝ සුව්

244

යතුර තිබේදැයි පරීක්ෂා කිරීමට (ආපසු Trueහෝ False)

'HOME' in os.environ

get()යතුර මුද්‍රණය කිරීමේදී ඔබට භාවිතා කළ හැකිය ; ඔබට පෙරනිමියක් භාවිතා කිරීමට අවශ්‍ය නම් ප්‍රයෝජනවත් වේ.

print(os.environ.get('HOME', '/home/username/'))

/home/username/පෙරනිමිය කොහිද ?


3
වඩා හොඳ කොයි වන අතර, "HOME" in os.environහෝ os.environ.get('HOME')?
එන්ඩොලිත්

11
ඔවුන් විවිධ දේ කරයි. පළමුවැන්නා සත්‍ය හෝ අසත්‍යය ලබා දෙන අතර දෙවැන්න වටිනාකමක් ලබා දෙයි.
ට්‍රෙන්ටන්

1
ඇන්ඩොලිත්, නිවැරදි ප්‍රශ්නය "HOME" in os.environඑදිරිව එදිරිව os.environ.get('HOME') is None. ඔබට මුලින් පෙනෙන පරිදි වැඩ කිරීමට වඩා කියවිය හැකි සහ සුව පහසු ය.
කොන්ස්ටන්ටින් සේකරේෂ්

59

මුල් ප්‍රශ්නය (පළමු කොටස) "පයිතන්හි පරිසර විචල්‍යයන් පරීක්ෂා කරන්නේ කෙසේද" යන්නයි.

OO FOO සකසා ඇත්දැයි පරීක්ෂා කරන්නේ කෙසේද යන්න මෙන්න:

try:  
   os.environ["FOO"]
except KeyError: 
   print "Please set the environment variable FOO"
   sys.exit(1)

66
Os.en Environment හි "FOO"
ealfonso

4
උත්සාහ කිරීම වේගවත් විය හැකිය. Env vars හි සිද්ධිය 'උත්සාහ කිරීම' සඳහා වඩාත් සුදුසු ය: stackoverflow.com/a/1835844/187769
RandomInsano

13
AndRandomInsano fast = / = වඩා හොඳයි. මෙම කේතය ක ට වඩා අඩු කියවිය හැකි බලයි "if 'FOO' not in os.environ: ..."වාරණ
Dangercrow

44

භාවිතයෙන් ඔබට පරිසර විචල්‍යයන්ට ප්‍රවේශ විය හැකිය

import os
print os.environ

PYTHONPATH හෝ PYTHONHOME පරිසර විචල්‍යයන්ගේ අන්තර්ගතය බැලීමට උත්සාහ කරන්න, සමහර විට මෙය ඔබගේ දෙවන ප්‍රශ්නයට ප්‍රයෝජනවත් වනු ඇත. කෙසේ වෙතත් ඔබ එය පැහැදිලි කළ යුතුය.


29

පරිසර විචල්යයන් සඳහා:

import os
print os.environ["HOME"]

හොඳ පිළිතුරක් ලැබීමට පෙර ඔබේ දෙවන කරුණ මඳක් ඉදිරියට ගෙන යා යුතු යැයි මම බිය වෙමි.


27
import os
for a in os.environ:
    print('Var: ', a, 'Value: ', os.getenv(a))
print("all done")

එමඟින් සියලු පරිසර විචල්‍යයන් සහ ඒවායේ අගයන් මුද්‍රණය කෙරේ.


27

ඇත්ත වශයෙන්ම මෙය මෙය කළ හැකිය:

import os

for item, value in os.environ.items():
    print('{}: {}'.format(item, value))

හෝ සරලව:

for i, j in os.environ.items():
    print(i, j)

පරාමිතියේ අගය බැලීමට:

print(os.environ['HOME'])

හෝ:

print(os.environ.get('HOME'))

අගය සැකසීමට:

os.environ['HOME'] = '/new/value'

4
නැත, මෙම පිළිතුර දැනට පවතින පිළිතුරු වලට ඉහළින් කිසිවක් එකතු නොකරයි
බාර්ට්

1
මෙය ඉවත් කළ යුතුය, එය වෙනත් පිළිතුරු වල අනුපිටපතකි. str.formatයනු විසිතුරු එකතු කිරීමකි.
connectyourcharger

>>> import os, pprint; pprint.pprint(list(os.environ.items()))
noobninja

18

නිෂ්පාදන වෙබ් යෙදුම් කේතයක කේතය භාවිතා කිරීමට ඔබ අදහස් කරන්නේ නම්,
ජැන්ගෝ / ෆ්ලැස්ක් වැනි ඕනෑම වෙබ් රාමුවක් භාවිතා කරමින්, එන්වර්පාර්ස් වැනි ව්‍යාපෘති භාවිතා කරන්න, එය භාවිතා කිරීමෙන් ඔබට අර්ථ දක්වන ලද වර්ගය ලෙස අගය කියවිය හැකිය.

from envparse import env
# will read WHITE_LIST=hello,world,hi to white_list = ["hello", "world", "hi"]
white_list = env.list("WHITE_LIST", default=[]) 
# Perfect for reading boolean
DEBUG = env.bool("DEBUG", default=False)

සටහන: kennethreitz's autoenv යනු ව්‍යාපෘති විශේෂිත පරිසර විචල්‍යයන් සෑදීම සඳහා නිර්දේශිත මෙවලමකි, කරුණාකර භාවිතා කරන අය බව සලකන්නautoenv.env ගොනුව පුද්ගලිකව තබා ගන්න (මහජනයාට ප්‍රවේශ විය නොහැක)


11

විශිෂ්ට පුස්තකාල ගණනාවක් ද තිබේ. උදාහරණයක් ලෙස Envs මඟින් ඔබේ පරිසර විචල්‍යයන්ගෙන් වස්තු විග්‍රහ කිරීමට ඉඩ ලබා දේ. උදාහරණයක් වශයෙන්:

from envs import env
env('SECRET_KEY') # 'your_secret_key_here'
env('SERVER_NAMES',var_type='list') #['your', 'list', 'here']

3

ජැන්ගෝ සඳහා බලන්න ( https://github.com/joke2k/django-en Environment )

$ pip install django-environ

import environ
env = environ.Env(
# set casting, default value
DEBUG=(bool, False)
)
# reading .env file
environ.Env.read_env()

# False if not in os.environ
DEBUG = env('DEBUG')

# Raises django's ImproperlyConfigured exception if SECRET_KEY not in os.environ
SECRET_KEY = env('SECRET_KEY')

0

ඔබට මෙය උත්සාහ කළ හැකිය

පළමුව, ස්ථාපනය කරන්න python-decouple

pip install python-decouple

එය ඔබගේ ගොනුවට ආයාත කරන්න

from decouple import config

ඉන්පසු env විචල්‍යය ලබා ගන්න

SECRET_KEY=config('SECRET_KEY')

පයිතන් පුස්තකාලය ගැන වැඩි විස්තර මෙතැනින් කියවන්න

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.