comment faire pour exécuter un script python avec os.fourche sur windows?
os.fork()
commande n'est pas prise en charge sous windows, et donne l'erreur suivante:
AttributeError: 'module' object has no attribute 'fork'
Donc, la question générale est Comment exécuter un script qui contient un appel à os.fork()
sous Windows?. Je n'ai pas l'esprit à l'aide de quelque chose qui ne se moque le comportement et s'exécute beaucoup plus lentement, c'est uniquement pour les tests. Je préfère aussi ne pas modifier le script que c'est un 3ème partie du module.
Pour vous donner une perspective plus large, je suis en train d'utiliser le module rq
un.k.un redis queue
sur Windows. Finalement, je vais exécuter le code sur heroku serveur est une machine Linux, mais au cours du développement de l'application web, je suis à l'aide de Windows.
os.fork()
.cela peut sembler facile, mais je ne suis pas sûr de la façon de déplacer l'ensemble de la 'heroku', 'git', 'foreman', 'virtualenv' utiliser une autre version de python. Comment est-il facile? Pouvez-vous développer?
ici ne fait pas référence à un numéro de version différent, mais dans une version différente. Un Python pour Cygwin serait probablement travailler avec heroku, git, etc. l'amende juste. La seule question est, compte tenu de votre manque d'expérience avec Cygwin, comment de nombreux autres problèmes, vous feriez exécuter dans une telle configuration.
Eh bien, vous pourriez avoir à frob votre
PATH
variable d'environnement afin qu'il capte la bonne version, par exemple C:\cygwin\bin\python.exe
plutôt que C:\Program Files\Python\python.exe
.OriginalL'auteur zenpoy | 2013-06-25
Vous devez vous connecter pour publier un commentaire.
Il n'est pas facile à imiter
fork()
sur les systèmes qui n'ont pas, comme Windows. Si le code utilise uniquementfork()
à démarrer un nouveau processus avecexec
, vous pouvez le porter sur l'utilisationsubprocess
. Mais ce ne semble pas être le cas dans rq, de sorte que vous disposez de plusieurs options:Port
rq
de Windows, ou demander à quelqu'un de le faire pour vous. La meilleure façon de port la partie du code qui appellefork()
peut-être à l'aide de lamultiprocessing
module. Toutefois, vous aurez toujours besoin de remplacer d'autres parties du code qui dépendent de Unix, tels que les utilisations designal.alarm()
dans letimeouts
module.Utiliser Python sous Cygwin, qui émule un entièrement fonctionnel (bien que slowish)
fork()
, de sorte que Cygwin Python a un travailos.fork()
. Notez que pour obteniros.fork()
, vous aurez besoin d'utiliser un Cygwin-construit Python, comme celui que Cygwin navires, et pas il suffit de lancer le Windows normal Python sous Cygwin.Tester l'application sur un Linux dans une machine virtuelle.
Parmi ces malheureux options je vous recommande le dernier.
OriginalL'auteur user4815162342
Importer un wrapper qui conditionnellement enveloppe le sous-processus approprié d'appeler dans une fonction appelée la fourche et l'ajoute à l'os de l'espace de noms.
Peut-être ce peut être une option de contacter le vendeur et de souligner que les os.la fourche n'est pas une option privilégiée pour vous.
OriginalL'auteur Steve Barnes
Sur windows, vous pouvez installer cygwin avec python. Cette installation de python aura module os qui prend en charge l'os.appel fork ().
OriginalL'auteur Nitin_k29