আর্কপাই কল করতে পারে এমন পৃথক পাইথন ইনস্টলেশন করা?


28

আমি প্রচুর প্রশ্নোত্তর দেখছি এবং জিজ্ঞাসা করছিলাম যে আপনি কীভাবে পৃথক পাইথন ইনস্টলেশন (যেমন অ্যানাকোন্ডা বা পাইথন এক্সওয়াই ডিস্ট্রিবিউশন) তৈরি করতে পারেন যা আরকিপি ব্যবহার করতে পারে, যখন মূল আর্কজিআইএস পাইথন ইনস্টলেশনটি 'ব্রেকিং' করে না।

আমারও একই সমস্যা ছিল এবং আমি মনে করি একটি 'সর্বজনীন' সমাধান পেয়েছি। এখন পর্যন্ত আমরা প্রায় 8 টি কম্পিউটারে এটি করেছি এবং এটি সব ঠিকঠাক কাজ করে।

আরকজিআইএস ব্যবহার করতে পারে এমন একটি পৃথক পাইথন বিতরণ কীভাবে ইনস্টল করবেন?

উত্তর:


37

আমি একটি ছোট (এবং তুলনামূলকভাবে জনপ্রিয়) মডিউল তৈরি করেছি যা বন্ধ হয়ে যায় এবং আপনার পিসিতে আর্কজিআইএসের খোঁজ করে। একবার এটি পরিবেশে সঠিক পাথ যুক্ত করে যাতে আপনি আরকিপি আমদানি করতে পারেন find ব্যবহারটি এরকম হয়:

try:
    import archook #The module which locates arcgis
    archook.get_arcpy()
    import arcpy
except ImportError:
    # do whatever you do if arcpy isnt there.

মডিউলটি এখানে গিথুবটিতে হোস্ট করা হয়েছে: https://github.com/JamesRamm/archook

এটি খুব সহজ এবং আমি নিশ্চিত যে আরও শক্তিশালী করা যায় তবে এটি কাজ করে। এটি পাইপিতে পাওয়া যায়:pip install archook

আরও বেশি 'ম্যানুয়াল' আসল পদ্ধতির তুলনায় এর কয়েকটি সুবিধা রয়েছে (নীচে বিস্তারিত):

  1. আপনার প্রতিটি অজগর পরিবেশ আলাদাভাবে কনফিগার করতে হবে না ... কেবল মডিউলটি আমদানি করুন এবং আপনি চলে যাবেন
  2. এটি কোনও রেজিস্ট্রি কী বা স্থায়ী পরিবেশের ভেরিয়েবলগুলি সম্পাদনা / তৈরি করে না, সুতরাং বিদ্যমান অজগর / অর্কগিস কনফিগারেশনটি বিশৃঙ্খলা করার কোনও সম্ভাবনা নেই
  3. বিভিন্ন ফোল্ডার / ফাইলগুলির পাথ বা আপনি যে কোনও আর্কগিজের সংস্করণ ইনস্টল করেছেন সে সম্পর্কে আপনার কিছু জানতে হবে না। মডিউলটি আপনার জন্য এটি সন্ধান করবে।
  4. কোনও প্রশাসকের প্রমাণীকরণের প্রয়োজন নেই
  5. এটি অ্যানাকোন্ডার সাথে সুনির্দিষ্ট নয় - এটি কোনও পাইথন ইনস্টলেশন দ্বারা কাজ করবে

আমি নীচে মূল উত্তরটি রেখেছি, তবে এই সমাধানটি (আইএমও) আরও ভাল 100%।


2014 উত্তর

ঠিক আছে, সুতরাং এই উত্তরটি উইন্ডোজ 7 / উইন্ডোজ সার্ভারে আর্কজিআইএস 10.1 64 বিটের সাথে অ্যানাকোন্ডা 64 বিট পাইথন বিতরণের জন্য কাজ করে। নীচে দেওয়া টিপসের কয়েকটি (বা সমস্ত) পাইথনের অন্য উইন্ডো বিতরণে প্রয়োগ করতে পারে। প্রথমে অ্যানাকোন্ডা ইনস্টল করুন, এটি ডিরেক্টরি সি: \ অ্যানাকোন্ডায় যেতে হবে। 'সিস্টেমটি ডিফল্ট অজগর তৈরি করুন' বাক্সটি চেক করুন। এটি একটি সতর্কতা দিতে পারে যে আরও একটি অজগর ইনস্টল করা আছে তবে চালিয়ে যান। তারপর:

সেটআপ পাথ এবং এনভায়রনমেন্ট ভেরিয়েবল

প্রথমটি হ'ল সিটি: \ পাইথন 27 \ আর্কজিআইএসএক্স 6410.1 \ লিবি \ সাইট-প্যাকেজগুলি থেকে নতুন বিতরণ ডিরেক্টরিতে ( সি: C অ্যানাকোন্ডা ) ডিটিবিজিজিপি 64.pth ফাইলটি অনুলিপি করা । নামটি আরব্রিটারি, তবে অবশ্যই .pth এক্সটেনশন থাকতে হবে এটি নতুন বিতরণ ব্যবহার করার সময় আপনাকে আরকিপি আমদানি করতে দেয়। দ্রষ্টব্য: DTBGGP64.pth ফাইলের সঠিক অবস্থানটি সাইট-প্যাকেজ ডিরেক্টরিতে হওয়া উচিত (যেমন সি: \ অ্যানাকোন্ডা \ Libs \ সাইট-প্যাকেজ )। আমি দেখতে পেয়েছি যে অ্যানাকোন্ডার কিছু পুরানো সংস্করণ সহ, এটি শীর্ষ স্তরের ডিরেক্টরিতে বসে থাকলে এটি কাজ করে , পরবর্তী, পরিবেশের ভেরিয়েবলগুলি অবশ্যই পরীক্ষা করা উচিত: সিস্টেমের চলক পথেপাইথন ডিরেক্টরিতে বিদ্যমান পাথটি নতুন পথের সাথে প্রতিস্থাপন করা উচিত। (যেমন সি: \ অ্যানাকোন্ডা; সি: \ অ্যানাকোন্ডা \ স্ক্রিপ্টস; ) এটি উইন্ডোগুলিকে জানাবে যেখানে ডিফল্ট পাইথন ডিরেক্টরিটি রয়েছে। ব্যবহারকারী পরিবর্তনশীল PYTHONPATH সঠিক কিনা তা নিশ্চিত করুন । এটি আপনার ব্যবহার করতে চান এমন কোনও লাইব্রেরির দিকে ইঙ্গিত করা উচিত যা .pth ফাইল দ্বারা বর্ণিত নয় বা সাইট-প্যাকেজগুলিতে ইনস্টল করা আছে । আইই এটি হতে পারে আপনার নিজস্ব বিকাশ প্যাকেজ, বা ম্যাপনিক হিসাবে প্যাকেজগুলির পৃথক ইনস্টলেশন অবস্থান রয়েছে location

রেজিস্ট্রি সেটিংস পরীক্ষা করে দেখুন

কিছু মেশিনে উপরেরগুলি এটি নিশ্চিত করার জন্য পর্যাপ্ত হতে পারে যে আপনি নতুন পাইথন থেকে আরকি ব্যবহার করতে পারেন এবং সেই পাইথনটি আর্কজিআইএসের মধ্যে ব্যবহার করা যেতে পারে। অন্যান্য মেশিনে, আপনাকে রেজিস্ট্রি কীগুলি পরীক্ষা করতে হবে। নিম্নলিখিত রেজিস্ট্রি কীগুলিতে পাইথন সেটিংস রয়েছে:

HKEY_LOCAL_MACHINE OF সফটওয়্যার \ পাইথন \ পাইথনকোর 7 2.7 \ পাইথনপথ
একটি কী থাকতে হবে এবং এর মান হওয়া উচিত C: \ Anaconda \ Lib; C: \ Anaconda \ DLLs (বা পাইথন ইনস্টলেশন জন্য সংশ্লিষ্ট ফোল্ডার)

HKEY_LOCAL_MACHINE OF সফ্টওয়্যার \ পাইথন \ পাইথনকোর \ 2.7 \ ইনস্টলপথটি সি
হতে হবে : \ অ্যানাকোন্ডা

আপনার কাছে অন্যান্য অজগর সংস্করণ ইনস্টল থাকতে পারে ... সেক্ষেত্রে উপরের পাথগুলিতে সংস্করণ নম্বর পরিবর্তন করুন

HKEY_CLASSES_ROOT \ পাইথন.কম্পাইল ফাইল \ DefaultIcon এটি .pyc ফাইলগুলির জন্য ব্যবহার করার জন্য .ico ফাইলের অবস্থান is

HKEY_CLASSES_ROOT \ পাইথন.কম্পাইলফায়ার \ শেল \ ওপেন \ কমান্ড শেল থেকে একটি .pyc ফাইল খোলার সময় ইস্যু করার এই আদেশ। python.exeআপনার কাঙ্ক্ষিত অজগর সংস্করণের অবস্থানের পথটি পরিবর্তন করা উচিত

HKEY_CLASSES_ROOT \ পাইথন.ফাইল এখানে কীগুলি পাইথন.কম্পাইলফাইলে যেমন রয়েছে সেগুলি ছাড়াও সেগুলি একটি .py ফাইলে প্রয়োগ হয়। আবার, প্রাসঙ্গিক পরিবর্তনগুলি করুন। 'আইডিএল দিয়ে সম্পাদনা করুন' বা 'পাইথনউইন দিয়ে সম্পাদনা করুন' এর জন্য এটিতে অতিরিক্ত কী থাকতে পারে। আবার, প্রাসঙ্গিক পরিবর্তনগুলি করুন যাতে এই কীগুলির পাথগুলি আপনার কাঙ্ক্ষিত অজগর সংস্করণে নির্দেশ করে।

HKEY_CLASSES_ROOT \ পাইথন.নোকনফাইলে এগুলি পাইথন.ফাইলে হিসাবে একই, তবে pythonw.exeযেখানে যথাযথ প্রোগ্রামটি নির্দেশ করা উচিত ।

HKEY_LOCAL_MACHINE \ SOFTWARE \ ESRI \ Python10.1
দ্য PythonDir ArcMap ইত্যাদি মধ্যে ব্যবহার পাইথন ইনস্টলেশন মূল পয়েন্টগুলি .. আপনি হিসাবে ESRI দ্বারা ইনস্টল এই পাইথন ইনস্টলেশন থাকা, অথবা আপনার নতুন ইনস্টলেশন করার জন্য এটি পয়েন্টের জন্য চাইতে পারেন। এটা তোলে পারে যদি নতুন পাইথন ইনস্টলেশন ArcMap বাতলান অন্যান্য পরিবর্তন প্রয়োজন। সেখানে পারে প্যাকেজ সংস্করণ (যেমন numpy) নতুন বন্টন দ্বারা ইনস্টল সমস্যা হবে। আমি কারও মুখোমুখি হই নি।

আমার বেশিরভাগ কাজের জন্য, এটি অপ্রাসঙ্গিক কারণ আমি সাধারণত নিজেরাই পাইথনটি ব্যবহার করতে চাই এবং মাঝেমধ্যে আরকপির অ্যাক্সেস পেতে পারি। আমি আরকম্যাপের মধ্যে থেকেই পাইথনটি খুব কমই ব্যবহার করতে চাই..তাই আমি এই চূড়ান্ত পদক্ষেপের জন্য খুব কম পরীক্ষা করেছি, তবে মনে হচ্ছে যে আমি এ পর্যন্ত চেষ্টা করেছি এমন সমস্ত কিছুর জন্য এটি কাজ করে।

আমি কল্পনা করি যে পাইথন (x, y) ইত্যাদি ইনস্টল করার জন্য প্রক্রিয়াটি একই রকম হবে imagine

অন্যান্য নোট

.Pth ফাইলের বিষয়বস্তুগুলি আপনার আর্কজিআইএস ইনস্টলেশনে নীচের ফোল্ডারগুলিকে নির্দেশ করে এমন পাথের একটি তালিকা: বিন 64, আরকিপি, আর্কটুলবক্স \ স্ক্রিপ্ট উদাহরণস্বরূপ, আমার .pth ফাইলটিতে নিম্নলিখিত রয়েছে:

C:\Program Files (x86)\ArcGIS\Desktop10.2\bin64
C:\Program Files (x86)\ArcGIS\Desktop10.2\arcpy
C:\Program Files (x86)\ArcGIS\Desktop10.2\ArcToolbox\Scripts


এটি কি আর্কজিআইএসের সমস্ত পাইথন নির্ভরতা ইনস্টল করে? ম্যাটপ্লটলিব, নম্পি, এক্সএলআরডি, এক্সএলডাব্লু এবং ডেটুটিল?
KHibma

হ্যাঁ। অ্যানাকোন্ডা বিতরণের জন্য, প্যাকেজগুলির একটি সম্পূর্ণ তালিকা এখানে পাওয়া যাবে: docs.continuum.io/anaconda/pkgs.html আমি পাইথন (x, y) বা অন্যান্য বিতরণের সাথে তেমন পরিচিত নই
জেমস

2
ভুলে যাবেন না যে অর্কিজিআইএস (10.2 এবং 10.1) এর মধ্যে নমপির জন্য খুব নির্দিষ্ট সংস্করণ প্রয়োজনীয়তা রয়েছে - অবশ্যই 1.6.1 হওয়া উচিত বা আপনি আরকিটি ভেঙে ফেলতে পারেন।
ব্যবহারকারীর 858

1
দয়া করে DTBGGP64.pth ফাইলের সামগ্রী যুক্ত করুন! অনেক ব্যবহারকারীর কাছে এটি রয়েছে বলে মনে হয় না। :)
mmann1123

1
অ্যানাকোন্ডার একটি দুর্দান্ত বৈশিষ্ট্য হ'ল আপনি এটি আর্কজিআইএস বা অন্য কোনও প্যাকেজের জন্য আপনার প্রয়োজনীয় সংস্করণগুলির সাথে ভার্চুয়াল পরিবেশের সাথে সেট আপ করতে পারেন। উদাহরণস্বরূপ, আপনি আর্কজিআইএস এর সাথে কাজ করার জন্য ভার্চুয়াল পরিবেশ স্থাপন করতে পারেন যা Esri সরঞ্জামগুলির প্রত্যাশা করা সংস্করণ রয়েছে এবং আরকিসের বাইরে সম্পূর্ণরূপে কাজ করার সময় আরকিও অন্তর্ভুক্ত না এমন অন্য একটি রয়েছে।
কার্টিস দাম

5

আমার সমাধানটি হল একটি স্টার্টআপ স্ক্রিপ্ট সেট আপ করা যা আপনি ব্যবহার করছেন অজগর পরিবেশের উপর ভিত্তি করে পাথের সেট করে sets এই পদ্ধতির (বিশাল) সুবিধা রয়েছে যে পাইথন ইনস্টলেশনগুলিতে আপনার .pth ফাইলগুলি লেখার জন্য প্রশাসকের অ্যাক্সেসের প্রয়োজন নেই। এই স্ক্রিপ্টটি 32 বিট এবং 64 বিট অ্যানাকোন্ডা এবং আরকজিআইএস / আরকিপি উভয়ই ব্যবহার করতে সেটআপ করা হয়েছে।

    # Startup script to link Anaconda python environment with ArcGIS
    #
    # 1. Install Anaconda, setup environment to match your ArcGIS version
    # 2. Edit the paths below
    # 3. Put this startup script in the startup folder as "usercustomize.py"
    #    Startup folder can be found with: "C:\Python27\ArcGIS10.2\python -m site --user-site"
    #    Usually will be:
    # C:\Users\%USERNAME%\AppData\Roaming\Python\Python27\site-packages

    import sys
    import os

    # edit these paths to match your setup
    arcver = "10.2"
    # Anaconda home folders
    conda32 = r"D:\Users\cprice\Anaconda"
    conda64 = r"D:\Users\cprice\Anaconda64"
    # here are the conda environments you've set up use with ArcGIS
    # arc1022 is the environment setup for ArcGIS
    conda_env32 = "{}/envs/{}".format(conda32, "arc1022")
    conda_env64 = "{}/envs/{}".format(conda64, "arc1022")

    # do not edit below this line

    # ArcGIS Python home folders
    # i.e. C:\Python27\ArcGIS10.2
    arcver = arcver[:4]
    arcpy32 = r"C:\Python27\ArcGIS{}".format(arcver)
    arcpy64 = r"C:\Python27\ArcGISx64{}".format(arcver)

    try:
        if sys.version.find("64 bit") < 0:
            conda_path = os.path.normpath(conda_env32)
            arcpy_path = os.path.normpath(arcpy32)
            arcpy_pthfile = os.path.normpath(
                arcpy_path + "/lib/site-packages/desktop{}.pth".format(arcver))
        else:
            conda_path = os.path.normpath(conda_env64)
            arcpy_path = os.path.normpath(arcpy64)
            arcpy_pthfile = os.path.normpath(
                arcpy_path + "/lib/site-packages/DTBGGP64.pth")

        for p in [conda_path, arcpy_path, arcpy_pthfile]:
            if not os.path.exists(p):
                raise Exception("{} not found".format(p))

        ## print(sys.prefix)
        ## print(conda_path)

        # If running ArcGIS's Python, add conda modules to path
        if (sys.executable.lower().find("desktop" + arcver) != -1
            or sys.prefix.lower().find("arcgis10") != -1):
            sys.path.append(os.path.dirname(arcpy_path))
            conda_site = os.path.join(conda_path, "lib", "site-packages")
            if not os.path.isdir(conda_site):
                raise Exception()
            sys.path.append(conda_site)
            print("usercustomize.py: added conda paths to arc")

        # if running Anaconda add arcpy to path
        elif sys.prefix.lower() == conda_path.lower():
            with open(arcpy_pthfile, "r") as f:
                sys.path +=  [p.strip() for p in f.readlines()]
            print("usercustomize.py: added arcpy paths to conda")

    except Exception as msg:
        print(msg)
        pass

অন্যান্য .পি স্ক্রিপ্টগুলিতে আপনি কীভাবে এই স্ট্রার্টআপ স্ক্রিপ্টটিকে ভার্চুয়ালেনভের জন্য কল / কল করছেন? উদাহরণস্বরূপ, আপনার কাছে যদি কেবল একটি .পি স্ক্রিপ্ট থাকে যা "আরকিপি.কপি ফিচারস_ম্যানেজমেন্ট ('myinput.shp', 'myoutput.shp')"? " সহজ সরল উদাহরণ। কোনও পরামর্শের জন্য
থেক্স

3

যদি কেউ আর্কজিআইএস প্রো ব্যবহার করে এটি করার চেষ্টা করছে (উদাহরণস্বরূপ পাইথন 2 এর পরিবর্তে অজগর 3 দিয়ে):

আমি অ্যানাকোন্ডা প্যাকেজের মধ্যে স্পাইডার ব্যবহার করি। আমি যেভাবে এটি কাজ করেছিলাম তা হল স্পাইডারের টুলস> পাইথন ইন্টারপ্রেটারে গিয়ে স্পাইডারকে বর্তমানে সি: \ প্রোগ্রাম ফাইলস \ আর্কজিআইএস \ প্রো \ বিন \ পাইথন \ স্ক্রিপ্টস \ প্রোপি.ব্যাটটিতে অবস্থিত প্রোপাই.বাট ফাইলটির দিকে ইশারা করে।

এটি স্পাইডারে সঠিক অজগর সংস্করণ সক্রিয় করে এবং আপনাকে আরকিপি আমদানির অনুমতি দেয়।


1

আমি পৃথক ভার্চুয়াল পরিবেশ সেট আপ করতে নিম্নলিখিত কোডটি ব্যবহার করি , এতে আরকি এবং এটি নির্ভরতা রয়েছে:

set "VENV_PATH=C:\VirtualEnvs\MyArcPyEnv"
set "PYTHON=C:\Python27\ArcGIS10.3"

mklink /J %VENV_PATH%\Lib\site-packages\arcpy "C:\Program Files (x86)\ArcGIS\Desktop10.3\arcpy\arcpy"
mklink /J %VENV_PATH%\Lib\site-packages\numpy %PYTHON%\Lib\site-packages\numpy

mklink /J %VENV_PATH%\Lib\site-packages\matplotlib C:\Python27\ArcGIS10.3\Lib\site-packages\matplotlib
mklink /J %VENV_PATH%\Lib\site-packages\dateutil %PYTHON%\Lib\site-packages\dateutil
mklink /J %VENV_PATH%\Lib\site-packages\mpl_toolkits %PYTHON%\Lib\site-packages\mpl_toolkits

copy %PYTHON%\Lib\site-packages\pyparsing.py  %VENV_PATH%\Lib\site-packages
copy %PYTHON%\Lib\site-packages\pylab.py %VENV_PATH%\site-packages
copy %PYTHON%\Lib\site-packages\netcdftime.py %VENV_PATH%\Lib\site-packages
copy %PYTHON%\Lib\site-packages\netCDF4_utils.py %VENV_PATH%\Lib\site-packages

REM Only one of the following .pth files will exist (dependent on x64 or x32)

copy %PYTHON%\Lib\site-packages\Desktop10.3.pth %VENV_PATH%\Lib\site-packages
copy %PYTHON%\Lib\site-packages\DTBGGP64.pth %VENV_PATH%\Lib\site-packages
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.