Tôi có nhiều hoặc ít cài đặt sau đây. Trong ~/path/to/my/packages
Tôi có hai gói package1.m
và package2.m
. phác thảo của mỗi gói được, ví dụ như sau:Tải gói toán học từ trong một gói
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[]
Bây giờ, vấn đề của tôi là tôi muốn sử dụng vecNorm
quy định tại package1.m
trong package2.m
. Làm cách nào để tải (an toàn) package1
từ trong vòng package2
?
Tại thời điểm này, tôi nạp bằng tay cả gói như sau:
SetDirectory[StringJoin[NotebookDirectory[], "packages"]];
Needs["package1`"]
Needs["package2`"]
từ một máy tính xách tay được lưu trong ~/path/to/my
. Tôi chỉ muốn tải theo cách thủ công chỉpackage2
lần lượt sẽ tải tự động và an toàn package1
. Nói chung tôi muốn một giải pháp mà thay đổi ít nhất là có thể đường dẫn vv của mathematica. Nên thực hành tốt nhất để thực hiện điều này là gì?
PS: Bằng một cách an toàn Tôi có nghĩa là trong tương lai, khi tôi sẽ xác định package3
mà sẽ được sử dụng vecNorm
cũng và sẽ được tải package1
cũng không có xung đột sẽ xảy ra.
Phương pháp đầu tiên của bạn đã giải quyết được vấn đề của tôi! Cảm ơn. Đối với lần thứ hai, khi thử nó, có vẻ như có vấn đề với đường dẫn tìm kiếm và 'package1' không quản lý để tìm' package2'. - Tôi đã tự mình thử tùy chọn này và nó không hoạt động. – Dror
@Dror Phương pháp thứ hai sẽ hoạt động tốt. Nếu không, điều này có nghĩa là bạn đặt gói thứ hai của bạn ở đâu đó mà Mathematica không thể tìm thấy nó. Sau đó, bạn nên di chuyển các gói của mình đến một nơi mà M có thể tìm thấy chúng (ví dụ: '$ UserBaseDirectory') hoặc thêm thư mục chứa các gói của bạn vào biến' $ Path'.Trên thực tế, cả hai phương thức nhập đều hoạt động hoặc cả hai đều không thành công, vì vậy tôi hơi bối rối trước tình huống của bạn. –
Tôi muốn một giải pháp miễn phí từ các đường dẫn có thể thay đổi, vì tất cả điều này nằm trong một thư mục được chia sẻ và tôi không biết cài đặt của các cộng tác viên của tôi là gì. Thật vậy, có vẻ như phương pháp thứ hai không tìm thấy gói cơ bản. Tôi chắc chắn bối rối; nhưng hạnh phúc là có một giải pháp :) – Dror