मेरे पास निम्न सेटिंग कम या कम है। ~/path/to/my/packages
में मेरे पास दो पैकेज package1.m
और package2.m
हैं। प्रत्येक पैकेज की रूपरेखा है, उदाहरण के लिए, निम्नलिखित:पैकेज के भीतर से गणित पैकेज लोड करें
BeginPackage["package1`"]
[email protected]@Names["package1`*"];
[email protected]@Names["package1`*"];
Begin["`Private`"]
vecNorm[vec_?VectorQ]:=Module[{},Return[Sqrt[vec.vec]]];
End[]
[email protected]@Names["package1`*"];
EndPackage[]
अब, मेरी समस्या यह है कि मैं vecNorm
package2.m
में package1.m
में परिभाषित का उपयोग करना चाहते। मैं package2
के भीतर से package1
लोड (सुरक्षित रूप से) कैसे लोड कर सकता हूं? एक नोटबुक ~/path/to/my
में सहेजा से
SetDirectory[StringJoin[NotebookDirectory[], "packages"]];
Needs["package1`"]
Needs["package2`"]
:
पल में, मैं मैन्युअल दोनों संकुल के रूप में निम्नानुसार लोड। मैं मैन्युअल रूप से लोड करना चाहता हूं केवलpackage2
जो बदले में स्वचालित रूप से और सुरक्षित रूप से लोड हो जाएगा package1
। आम तौर पर मैं एक समाधान चाहता हूं जो गणित के जितने संभव पथ इत्यादि को बदलता है। इसे पूरा करने के लिए सबसे अच्छा अभ्यास क्या होना चाहिए?
पुनश्च: सुरक्षित रूप से से मेरा मतलब है कि भविष्य में, जब मैं package3
जो रूप में अच्छी तरह vecNorm
का उपयोग किया जाएगा निर्धारित करने होंगे और package1
रूप में अच्छी तरह कोई संघर्ष नहीं होगा लोड हो रहा है हो जाएगा।
आपकी पहली विधि ने मेरी समस्या हल की! धन्यवाद। दूसरे के लिए, जब इसे आज़माते हैं, ऐसा लगता है कि खोज पथ में कोई समस्या है और 'package1'' package2' ढूंढने में सक्षम नहीं है। - मैंने इस विकल्प को अपने आप से भी कोशिश की और यह काम नहीं किया। – Dror
@ डोर दूसरी विधि ठीक काम करना चाहिए। यदि ऐसा नहीं होता है, तो इसका मतलब यह होना चाहिए कि आपने अपना दूसरा पैकेज कहीं कहीं रखा है जहां गणित इसे नहीं ढूंढ सकता है। आपको या तो अपने पैकेज को ऐसे स्थान पर स्थानांतरित करना चाहिए जहां एम उन्हें ढूंढ सके (उदा। 'UserBaseDirectory'), या अपने पैकेज वाले '$ पथ' चर में निर्देशिका जोड़ें।दरअसल, दोनों आयात विधियां काम करती हैं, या दोनों विफल होनी चाहिए, इसलिए मैं आपकी स्थिति से थोड़ी परेशान हूं। –
मैं एक समाधान चाहता हूं जो संभवतः पथ परिवर्तन से मुक्त है, क्योंकि यह सब एक साझा निर्देशिका में है और मुझे नहीं पता कि मेरे सहयोगियों की सेटिंग्स क्या हैं। दरअसल, ऐसा लगता है कि दूसरी विधि बेस-पैकेज नहीं पाती है। मैं निश्चित रूप से परेशान हूँ; लेकिन खुश है कि एक समाधान है :) – Dror