Notice: Any messages purporting to come from this site telling you that your password has expired, or that you need to verify your details, confirm your email, resolve issues, making threats, or asking for money, are
spam. We do not email users with any such messages. If you have lost your password you can obtain a new one by using the
password reset link.
Entire forum
➜ MUSHclient
➜ Python
➜ Python path woes
It is now over 60 days since the last post. This thread is closed.
Refresh page
Posted by
| Poromenos
Greece (1,037 posts) Bio
|
Date
| Sat 28 Jun 2008 12:16 PM (UTC) |
Message
| I'm writing a script file and I've broken some of the functionality into modules, but when I try to import them I get import errors. I assume this is because MC runs the interpreter from its working directory and thus the interpreter can't find my module.
Is there any way to tell it where to look? (I don't want to have to put my module in site-packages)... |
Vidi, Vici, Veni.
http://porocrom.poromenos.org/ Read it! | Top |
|
Posted by
| Nick Gammon
Australia (23,120 posts) Bio
Forum Administrator |
Date
| Reply #1 on Sat 28 Jun 2008 09:03 PM (UTC) |
Message
| I have been having some similar problems recently. The "current directory" is a pain, as it can change if the user simply browses for a file in another directory.
A couple of solutions:
ChangeDir (GetInfo(66)) --> make the current directory the MUSHclient directory
Then load your modules.
Or use something like GetInfo(66) and then add the rest of the path to it. |
- Nick Gammon
www.gammon.com.au, www.mushclient.com | Top |
|
Posted by
| Poromenos
Greece (1,037 posts) Bio
|
Date
| Reply #2 on Sat 28 Jun 2008 09:04 PM (UTC) |
Message
| Hmm, can MC be changed so that the interpreter runs each script from its directory? |
Vidi, Vici, Veni.
http://porocrom.poromenos.org/ Read it! | Top |
|
Posted by
| Worstje
Netherlands (899 posts) Bio
|
Date
| Reply #3 on Sat 28 Jun 2008 09:22 PM (UTC) |
Message
| No, it came up before in these forums I think. Every process only has one current directory, so you can't make it specific.
However, Python is a wonderful language. Not too long ago, I read somewhere about someone who adjusted the way importing works so it would first look in a specific directory. Google a bit, you shouldn't have too much trouble finding it. Otherwise I'll see if I can find it. | Top |
|
Posted by
| Poromenos
Greece (1,037 posts) Bio
|
Date
| Reply #4 on Sat 28 Jun 2008 09:31 PM (UTC) |
Message
| Ah, I've already done that, all you need to do is append the directory of the import files to sys.path, I just don't like hardcoding paths :) |
Vidi, Vici, Veni.
http://porocrom.poromenos.org/ Read it! | Top |
|
Posted by
| Nick Gammon
Australia (23,120 posts) Bio
Forum Administrator |
Date
| Reply #5 on Sat 28 Jun 2008 09:37 PM (UTC) |
Message
| Can't you use GetInfo (66) ? That isn't a hard-coded path, it is the path currently in use. |
- Nick Gammon
www.gammon.com.au, www.mushclient.com | Top |
|
Posted by
| Poromenos
Greece (1,037 posts) Bio
|
Date
| Reply #6 on Sat 28 Jun 2008 09:38 PM (UTC) |
Message
| Yes, I think I'll go with that, I was just wondering if there was a way to "fix" this. I'm not sure whether each loaded script has a path one could tweak... Anyway, I'll use GetInfo, thanks for your help :) |
Vidi, Vici, Veni.
http://porocrom.poromenos.org/ Read it! | Top |
|
Posted by
| Poromenos
Greece (1,037 posts) Bio
|
Date
| Reply #7 on Sat 28 Jun 2008 09:43 PM (UTC) |
Message
| Hmm, that points to the world file directory, which assumes the script is in that directory... Could you at least add a "Script directory" directive there? Luckily, both my world file and its script are in the same directory, so this solves it.
I'm trying to do my thesis with MUSHclient and I run into a few problems on the first day :P By the way, it's GetInfo(67), small oversight there.
Thanks again for your help! |
Vidi, Vici, Veni.
http://porocrom.poromenos.org/ Read it! | Top |
|
Posted by
| Nick Gammon
Australia (23,120 posts) Bio
Forum Administrator |
Date
| Reply #8 on Sat 28 Jun 2008 10:05 PM (UTC) |
Message
| 66 is the application directory, like I said. I think that is always a fully-qualified path name, which is why I used it.
67 is the world file directory. That could be anywhere, it depends where you put your world file. |
- Nick Gammon
www.gammon.com.au, www.mushclient.com | Top |
|
Posted by
| Worstje
Netherlands (899 posts) Bio
|
Date
| Reply #9 on Sat 28 Jun 2008 10:12 PM (UTC) |
Message
| Also, since I am not sure if you want to refer to own utility libraries which aren't MUSH specific, or whether you are just trying to split your plugin over multiple files, I think the <include> tag may also be a viable alternative. I use it for one of my plugins which have around 2500 triggers in it, and where having it all in one file would be... TOO bulky.
It's essentially a concatenation of all scripts over the files into one buffer, which is loaded as one file. As such, it is all the same namespace and can't be seen seperately from within Python. But for my uses, that's usually more than plenty. =) | Top |
|
Posted by
| Poromenos
Greece (1,037 posts) Bio
|
Date
| Reply #10 on Sun 29 Jun 2008 12:01 AM (UTC) |
Message
| Ah, I can't use that because it's a plain script file, not a plugin file. The path thing should work well, thanks! |
Vidi, Vici, Veni.
http://porocrom.poromenos.org/ Read it! | Top |
|
The dates and times for posts above are shown in Universal Co-ordinated Time (UTC).
To show them in your local time you can join the forum, and then set the 'time correction' field in your profile to the number of hours difference between your location and UTC time.
26,352 views.
It is now over 60 days since the last post. This thread is closed.
Refresh page
top