Каждый переводчик может загрузить только одну версию любого конкретного пакета; предполагается, что их пространства имен конфликтуют, так что невозможно загрузить две версии одной и той же вещи одновременно.
Однако, вы можете загрузить другую версию (используя опцию -exact
для принудительной установки менее свежей версии) в суб-интерпретаторе. С большей вероятностью это будет работать с пакетами с чистым сценарием, чем с пакетами C (это зависит от того, насколько динамически загружается динамический загрузчик библиотеки ОС; некоторые - нет, некоторые нет)
interp create subinterp
subinterp eval {
package require -exact mypackage 1.1
}
subinterp eval mySquare 3
Хотя это может или не может быть тем, что вы ищете; интерпретаторы очень сильно изолированы друг от друга, поэтому доступ к другим вещам, происходящим в главном интерпретаторе, потребует установки псевдонимов ...