Aşağıdaki ayarlardan az ya da fazlası var. ~/path/to/my/packages
'da iki paket package1.m
ve package2.m
var. Her paketin anahat, örneğin, takip ediyor:Bir paket içinden bir matematik paketini yükleyin
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[]
Şimdi benim sorunum vecNorm
package2.m
yılında package1.m
tanımlanan kullanmak istediğiniz olmasıdır. package2
içinden (güvenli şekilde) package1
'u nasıl yükleyebilirim? şöyle anda
, elle iki paketi yüklemek:
SetDirectory[StringJoin[NotebookDirectory[], "packages"]];
Needs["package1`"]
Needs["package2`"]
~/path/to/my
kaydedilmiş bir defterden. Elle sadecepackage2
yüklemek istiyorum, bu da otomatik olarak ve güvenli bir şekilde package1
yükleyecektir. Genelde matematiksel yollardan olabildiğince az yol alan bir çözüm istiyorum. Bunu başarmak için en iyi uygulama ne olmalıdır?
PS: güvenle derken gelecekte, ne zaman ben de vecNorm
kullanacağınız package3
tanımlayacağız ve hem de hiçbir çakışma olur package1
yükleniyor olacağı anlamına gelir.
İlk yönteminiz benim problemimi çözdü! Teşekkürler. İkincisi ise, bunu denerken, arama yolunda bir sorun var gibi görünüyor ve 'package1'' package2' bulmayı başaramıyor. - Bu seçeneği kendim de denedim ve işe yaramadı. – Dror
@Dror İkinci yöntem düzgün çalışmalıdır. Eğer değilse, bu, ikinci paketinizi Mathematica'nın bulamadığı bir yere yerleştirdiğiniz anlamına gelir. Daha sonra, paketlerinizi M'nin onları bulabileceği bir yere (örneğin, '$ UserBaseDirectory') yerleştirmeli veya paketlerinizi içeren dizini '$ Path' değişkenine eklemelisiniz.Aslında, her ikisi de içe aktarma yöntemleri çalışır veya her ikisi de başarısız olur, bu yüzden durumunuza biraz şaşırdım. –
Tüm bunlar paylaşılan bir dizinde olduğundan ve işbirlikçilerimin ayarları neler olduğunu bilmediğimden, yol değişikliklerinden olabildiğince özgür olan bir çözüm istiyorum. Gerçekten de, ikinci yöntem temel paketi bulamıyor gibi görünüyor. Eminim şaşkınım; ama bir çözüm olduğu için mutluyum :) – Dror